asp.net-mvc – 可以为MVC Razor Layout指定可搜索的位置格式吗?

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 可以为MVC Razor Layout指定可搜索的位置格式吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在Razor中,当加载部分视图时,可以只指定部分视图名称,Razor视图引擎将搜索RazorViewEngine.PartialViewLocationFormats:
@Html.RenderPartial("_PartialView",Model);

将实际搜索视图引擎中的PartialViewLocationFormats中指定的位置,例如

~/Views/Home/_PartialView.cshtml
~/Views/Shared/_PartialView.cshtml

但是,当指定布局时,我似乎被迫指定布局的特定路径:

@Layout = "~/Views/Shared/MyLayout.cshtml";

我想做的是通过名称指定布局,并通过搜索公共位置的列表找到实际的布局:

@Layout = "MyLayout";

…但我找不到任何设施.由于我找不到任何有关此文档的文档,我尝试使用RazorViewEngine.MasterLocationFormats进行播放,但是在定位布局时不会使用此属性.

有人知道该怎么做吗

解决方法

最近我在一个类似的问题上挣扎着,在一个使用自定义ViewEngine的主题应用程序中首先搜索主题的位置以查看主意,我试图覆盖一些主文件.强制布局定位通过ViewEngine的FindView的一种方法是在返回时指定控制器操作中主视图的名称
return View("myView","myViewMaster");

但是,如果“myViewMaster”还具有布局(嵌套布局),则此方法对于嵌套布局不起作用.到目前为止,我最好的解决方案是直接在视图中调用视图引擎:

@{
    Layout = (ViewEngines.Engines.FindView(this.ViewContext.Controller.ControllerContext,"myViewMaster","").View as RazorView).ViewPath;
}

这是有效的,但当然可以封装在一个扩展方法中,以避免重复和抽象代码.

希望有帮助!

猜你在找的asp.Net相关文章