【问题标题】:How can I make an IActionFilter available to razor pages?如何使 IActionFilter 可用于剃须刀页面?
【发布时间】:2020-11-06 21:34:08
【问题描述】:

我有这个过滤器:

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 razor 页面时,ViewBag.Example 不存在。

如何使它也可用于剃须刀页面?

这不起作用:

services.AddRazorPages(options =>
{
    options.Filters.Add(typeof(ViewBagFilter));
});

【问题讨论】:

    标签: c# asp.net-core-mvc razor-pages asp.net-core-identity action-filter


    【解决方案1】:

    Razor 页面中的过滤器与 MVC 不同。您需要创建 Razor Pages 版本:https://www.learnrazorpages.com/razor-pages/filters

    请注意,动态 ViewBag 类型在 Razor 页面 PageModel 类型中不可用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-11
      • 2020-04-15
      • 2021-10-11
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      相关资源
      最近更新 更多