【问题标题】:Is it possible to execute a specific block of code before the OnPost() method is executed in the .cshtml.cs file on a set pages?是否可以在设置页面上的 .cshtml.cs 文件中执行 OnPost() 方法之前执行特定的代码块?
【发布时间】:2021-02-20 07:03:15
【问题描述】:

我想确定是否应允许执行 OnPost() 的页面数量很多。

我想知道您是否可以/在OnPost() 发生之前执行代码块以可能阻止OnPost() 调用的最佳方法是什么?

我知道您可以在每个 OnPost() 的顶部进行检查并调用一些对象/类方法来指示,但是在 OnPost() 甚至针对特定的一组页面执行之前还有其他方法可以执行?

(使用 Razor 页面,而不是 MVC)

【问题讨论】:

  • 您正在寻找的称为中间件,您可以在其中将功能插入到处理管道中,请参阅learnrazorpages.com/middleware 示例
  • 如果这是关于是否允许访问,我建议您使用内置的授权堆栈来处理。

标签: c# asp.net-core post .net-core razor-pages


【解决方案1】:

您可以在选择处理程序方法之后,但在执行之前使用过滤器来执行代码:

public override void OnPageHandlerSelected(PageHandlerSelectedContext context)
{
    if(context.HandlerMethod.MethodInfo.Name == nameof(OnPost))
    {
        // code placed here will only execute if the OnPost() method has been selected
    }
}

https://www.learnrazorpages.com/razor-pages/filters

【讨论】:

    猜你喜欢
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多