1 asp.net-mvc-2 asp.net-core-mvc
每次查看基于_layout.cshtml的任何页面时,我都需要运行一些c#代码.我不想在每个controller.cs文件中添加一些东西,就像你曾经在ASP.NET的MasterPage.cs中使用的一样.
无法得到这个
或这个
运行,不知道是不是因为它们不是CORE 2.0.0,我只是遇到了很多编译错误.我想做的就是能够运行这样的代码
public class myClass {
public static bool returnTrue() {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
每次加载每个页面.
您可以使用动作过滤器完成此操作
public class GlobalFilter : IActionFilter{
public void OnActionExecuting(ActionExecutingContext context) {
//code here runs before the action method executes
}
public void OnActionExecuted(ActionExecutedContext context) {
//code here runs after the action method executes
}
}
Run Code Online (Sandbox Code Playgroud)
然后在方法的Startup.cs文件中ConfigureServices连接ActionFilter,如下所示:
services.AddScoped<GlobalFilter>(); //add it to IoC container.
services.AddMvc().AddMvcOptions(options => {
options.Filters.AddService(typeof(GlobalFilter)); //Tell MVC about it
});
Run Code Online (Sandbox Code Playgroud)
然后,您可以在此ActionFilter中放置代码,该代码可以在每个操作方法之前运行,您可以在其中放置代码以在每个操作方法之后运行.查看代码注释.
通过context参数,您可以访问控制器,控制器名称,操作描述符,操作名称,请求对象(包括路径)等,因此有很多信息可供您确定要执行代码的页面. .我不知道一个特定的属性会告诉你页面是否正在使用,_layout.cshtml但你可能会根据我提到的其他属性推断出它.
请享用.
| 归档时间: |
|
| 查看次数: |
948 次 |
| 最近记录: |