c# - 从 Action 过滤器中查看模型

标签 c# asp.net-core asp.net-core-mvc .net-core

如何在.Net Core中通过过滤器传递模型 View ? (我不想重定向)

我的操作过滤器:

private class CustomFilter : IActionFilter
{
    private readonly MainDbContext _mainDbContext;

    public CustomFilter(MainDbContext mainDbContext)
    {
        _mainDbContext = mainDbContext;
    }

    public void OnActionExecuting(ActionExecutingContext context)
    {
        var model = _mainDbContext.Groups.ToList();
        context.Result = new ViewResult { ViewName = "Index" };
    }

    public void OnActionExecuted(ActionExecutedContext context)
    {
    }
}

最佳答案

以下应该有效:

    public void OnActionExecuting(ActionExecutedContext context)
    {
        var model = _mainDbContext.Groups.ToList();

        var result = context.Result as ViewResult;
        if (result != null)
        {
            context.Result = new ViewResult { ViewName = "Index", ViewData = new ViewDataDictionary(result.ViewData)
            {
                Model = model
            }};
        }
    }

此外,请考虑使用 Result filter而不是 Action 过滤器。

Result filters are only executed for successful results - when the action or action filters produce an action result. Result filters are not executed when exception filters handle an exception.

关于c# - 从 Action 过滤器中查看模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46565912/

相关文章:

c# - Windows服务通过ManagedInstallerClass启动失败,通过InstallUtil启动成功

c# - 为什么我需要 "new"来进行锯齿状数组初始化?

ASP.NET 5 未在开发模式下运行

c# - 在 .NET Core WebAPI 中使用分布式内存缓存时设置最大内存

c# - 使用 XNA 和 C# 在 X 轴和 Y 轴上创建二维视差背景

c# - 500 自定义错误从不显示但在预览中

.net - 如何从另一个项目中引用 ASP.NET 5 项目?

javascript - 选择特定 DropDown 的值时获取其值

asp.net-core - 新鲜的 ASP.NET Core 2.0 MVC Web 应用程序模板浏览器链接有效但有 404 错误

asp.net-core - 如何在启动时将数据放入 MemoryCache?