MVC.NET 在 ActionFilterAttribute 中获取完整视图路径

美国能源部

如何在 ActionFilterAttribute 中获取当前渲染视图的完整视图路径?我找不到解决方案。

我只想在 OnActionExecuted(自定义验证等)中做一些事情,如果验证失败,我想显示带有验证错误的调用站点 - 这对我来说似乎很简单,但事实并非如此,因为我不能找到最新渲染视图的完整路径...

到目前为止,它使用此代码在 OnActionExecuted 上工作,用于硬编码视图。

filterContext.Result = new ViewResult() {
      ViewName = "~/Views/Login/Index.cshtml", // This is the path of the view with the calling form
      ViewData = new ViewDataDictionary(filterContext.Controller.ViewData) {
        Model = ApplicationFiler.GetViewModel(filterContext)
      }
    };

到目前为止,我认为我可以在上下文中获得最新渲染视图的完整路径,但我不能。如何获得真正渲染的完整路径?

然后我想,也许我可以在 OnActionExecuted 中获取操作执行后的信息来临时保存路径,以便以后使用。但是我仍然无法找到完整路径(我需要上次执行 Action 时返回的视图的完整路径,没有任何错误)。

我真的必须临时保存执行的每个操作的完整路径吗?

代码填充器

您可以通过以下方式从操作过滤器访问查看路径:

public override void OnResultExecuted(ResultExecutedContext filterContext)
{
    ViewResult viewResult = filterContext.Result as ViewResult;
    RazorView view = viewResult?.View as RazorView;
    string viewPath = view?.ViewPath;

    // ...
}

您应该准备好这ViewResult不是ActionResult控制器返回的唯一可能控制器可以返回其他操作结果(例如HttpNotFoundResultJsonResult)。在这种情况下,显然无法在操作过滤器中访问视图。构造filterContext.Result as ViewResult将返回null

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在ASP.NET Core的ActionFilterAttribute中异步执行

在ASP.NET MVC中获取完整的操作URL

在ASP.NET MVC中编译视图

如何从ApiController中的ActionFilterAttribute访问属性?

ASP.NET MVC中“找不到网络路径”的原因

在asp.net核心rc2应用程序的ActionFilterAttribute中访问IConfiguration

在Asp.Net MVC中的视图内部渲染视图

如何从ASP.NET Core中的ActionFilterAttribute访问AppSettings

如何在.net Core 2.0 MVC的razor中映射路径?

C#ASP.NET MVC 5-> ActionFilterAttribute->停止自动重定向HTTP 401

插件中的ASP .NET Core MVC 2.1 mvc视图

Asp.Net MVC 4-ActionFilterAttribute用法

阅读ActionFilterAttribute中的Asp.Net Core Response正文

ASP.NET Core MVC视图组件搜索路径

无法访问从ActionFilterAttribute派生的类中的存储库(或DbContext)

.Net Core 3.1中的自定义ActionFilterAttribute返回:无法解析类型'System.String'的服务

ActionFilterAttribute中的GetService返回null

asp.net MVC将数据库中的相对路径保存为非完整路径

如何在ASP.NET MVC 3的视图模型中获取Dropdown SelectedItem文本

如何在控制器MVC1中获取完整的URL路径

ASP.NET MVC-路由和ActionFilterAttribute

如何在ActionFilterAttribute ASP MVC 5中将值设置为ViewBag?

获取在ASP.NET MVC中调用控制器的视图的名称

如何在类库ActionFilterAttribute中访问Unity容器?

在 ASP.NET MVC 中拒绝访问路径

如何在asp.net mvc core中获取页面路径

如何使用 ASP.NET MVC 中的 Razor 视图从对象列表中获取控制器中的单个对象

如何从 .NET Core api 中的 MVC 视图使用 API?

在 ASP.NET Core MVC 视图模型中获取空引用错误