加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 18:59:14 所属栏目:asp.Net 来源:网络整理
导读:在Razor中,当加载部分视图时,可以只指定部分视图名称,Razor视图引擎将搜索RazorViewEngine.PartialViewLocationFormats: @Html.RenderPartial("_PartialView",Model); 将实际搜索视图引擎中的PartialViewLocationFormats中指定的位置,例如 ~/Views/Home/_Pa
在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;
}

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

希望有帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读