MVC CORE 2.0.0 运行 每个页面上的 c# 代码
MVC CORE 2.0.0 run c# code on every page
每次查看任何基于 _layout.cshtml 的页面时,我都需要 运行 一些 C# 代码。我不想在每个 controller.cs 文件中都放一些东西,只是像你以前在 ASP.NET 的 MasterPage.cs
中放一些东西
无法得到这个
Run a method in each request in MVC, C#?
或这个
@Html.Action in Asp.Net Core
到 运行,不确定是不是因为它们不是 CORE 2.0.0,我只是遇到很多编译错误。我想要做的就是能够运行一些这样的代码
public class myClass {
public static bool returnTrue() {
return true;
}
}
每次加载每个页面时。
Filter 也可以,但进入 .Net Core 的正确方法是 Middleware。您可以阅读更多相关信息 here。
如果它像您的示例一样简单,您可以使用 link 上的第一个示例,例如:
app.Use(async (context, next) =>
{
returnTrue();
await next.Invoke();
});
如果有帮助,请告诉我!
您可以使用操作过滤器来完成此操作
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
}
}
然后在 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
});
然后你可以在这个 ActionFilter 中放置代码,它可以在每个操作方法之前 运行 并且你可以在每个操作方法之后将代码放在 运行 中。请参阅代码注释。
通过context
参数可以访问Controller、Controller Name、Action Descriptor、Action Name、Request object(含路径)等信息,有很多信息可以供你使用确定要为哪个页面执行代码。我不知道具体的 属性 会告诉您页面是否正在使用 _layout.cshtml
,但您可能可以根据我提到的其他属性推断出这一点。
尽情享受吧。
每次查看任何基于 _layout.cshtml 的页面时,我都需要 运行 一些 C# 代码。我不想在每个 controller.cs 文件中都放一些东西,只是像你以前在 ASP.NET 的 MasterPage.cs
中放一些东西无法得到这个
Run a method in each request in MVC, C#?
或这个
@Html.Action in Asp.Net Core
到 运行,不确定是不是因为它们不是 CORE 2.0.0,我只是遇到很多编译错误。我想要做的就是能够运行一些这样的代码
public class myClass {
public static bool returnTrue() {
return true;
}
}
每次加载每个页面时。
Filter 也可以,但进入 .Net Core 的正确方法是 Middleware。您可以阅读更多相关信息 here。
如果它像您的示例一样简单,您可以使用 link 上的第一个示例,例如:
app.Use(async (context, next) =>
{
returnTrue();
await next.Invoke();
});
如果有帮助,请告诉我!
您可以使用操作过滤器来完成此操作
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
}
}
然后在 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
});
然后你可以在这个 ActionFilter 中放置代码,它可以在每个操作方法之前 运行 并且你可以在每个操作方法之后将代码放在 运行 中。请参阅代码注释。
通过context
参数可以访问Controller、Controller Name、Action Descriptor、Action Name、Request object(含路径)等信息,有很多信息可以供你使用确定要为哪个页面执行代码。我不知道具体的 属性 会告诉您页面是否正在使用 _layout.cshtml
,但您可能可以根据我提到的其他属性推断出这一点。
尽情享受吧。