我有这个过滤器:
public class ViewBagFilter : IActionFilter
{
private readonly ApplicationDbContext db;
public ViewBagFilter(ApplicationDbContext _dbContext)
{
db = _dbContext;
}
public void OnActionExecuting(ActionExecutingContext context)
{
var controller = context.Controller as Controller;
var dataFromDb = {db-query};
controller.ViewBag.Example = dataFromDb;
}
public void OnActionExecuted(ActionExecutedContext context)
{
// do something after the action executes
}
}
...像这样包含在Startup.cs
中:
services.AddMvc(options =>
{
options.Filters.Add(typeof(ViewBagFilter));
});
但是当我导航到任何Identity剃刀页面时,ViewBag.Example
不存在。
我如何也可以将其用于剃须刀页面?
这不起作用:
services.AddRazorPages(options =>
{
options.Filters.Add(typeof(ViewBagFilter));
});
答案 0 :(得分:1)
Razor页面中的过滤器与MVC不同。您将需要创建一个Razor Pages版本:https://www.learnrazorpages.com/razor-pages/filters
请注意,动态ViewBag
类型在Razor Pages PageModel
类型中不可用。