asp.net-mvc C 为什么在视图引擎中指定位置时,viewstart文件中需要布局的完整路径?
_ViewStart文件指定具有完整文件路径的布局,如下所示:
@{
Layout = "~/Views/Shared/_MasterLayout.cshtml";
}
据我
我正在玩剃刀视图引擎,而且还有一些我不太了解的东西. _ViewStart文件指定具有完整文件路径的布局,如下所示: @{ Layout = "~/Views/Shared/_MasterLayout.cshtml"; }据我了解,必须包括完整的路径和扩展.你不能这样做: @{ Layout = "_MasterLayout"; }但是,视图引擎指定搜索主视图的位置: MasterLocationFormats = new string[] { "~/Views/{1}/{0}.cshtml","~/Views/Shared/{0}.cshtml" };为什么_ViewStart文件中需要完整的主布局文件路径? 如果指定了完整路径,那么在MasterLocationFormats []中指定可能的位置有什么意义呢? 更新 好吧,我还没有找到一个满意的答案. 从实验中可以看出,在viewstart文件中指定Layout时,MasterLocationFormats要么被插入要么被覆盖. 我可以从MasterLocationFormats中完全删除MasterLayout.cshtml位置,它对网页的显示没有任何影响. 我的个人问题是由于使用了MvcMailer package,它允许您指定剃刀视图以用作发送HTML电子邮件的模板.这个DOES使用MasterLocationFormats. 所以我仍然有点困惑,但希望这对任何来这里的人都有用.另外,this post may also be of help. 解决方法 在RazorViewEngine的CreateView实现中,创建了一个新的RazorView.当RazorView覆盖BuildManagerCompiledView的RenderView方法时,它实际调用了IView的Render方法. 在此实现结束时,该行被调用. webViewPage.ExecutePageHierarchy(new WebPageContext(context: viewContext.HttpContext,page: null,model: null),writer,startPage);这导致我们在System.Web.Mvc.dll中的WebViewPage的ExecutePageHierarchy方法. public override void ExecutePageHierarchy() { TextWriter writer = this.ViewContext.Writer; this.ViewContext.Writer = this.Output; base.ExecutePageHierarchy(); if (!string.IsNullOrEmpty(this.OverridenLayoutPath)) this.Layout = this.OverridenLayoutPath; this.ViewContext.Writer = writer; }如您所见,上面的布局路径被覆盖. 有关更多信息,您可以检查RazorView和WebViewPage类. (编辑:十堰站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – Visual Studio 2010 Full和ASP.NET MVC 2.0
- asp.net – 如果我没有指定targetFramework =“4.0”会发生
- VS 2013 RC中缺少ASP.NET Web窗体脚手架功能
- asp.net – 何时覆盖OnError?
- asp.net-mvc – Bug? ASP.NET MVC 2中的客户端验证导致Val
- Asp.NetCore1.1版本去掉project.json后如何打包生成跨平台包
- 利用ASP.NET MVC和Bootstrap快速搭建个人博客之后台dataTab
- asp.net-mvc-3 – 如何在页面提交ASP.Net MVC时捕获哪个单选
- asp.net – jquery getJson没有将任何值传递给控制器
- 设置ASP.NET页面不被缓存(客户端/服务器端取消缓存方法)
- asp.net中mvc使用ajax提交参数的匹配问题解决探讨
- asp.net 删除项目文件/文件夹IIS重启,Session丢
- asp.net – 使用WebMethods和session时的最佳实践
- Asp.NEt邮箱验证修改密码通过邮箱找回密码功能
- 如何在asp.net中更改javascript警告框的标题?
- asp.net-mvc – 将DropDownListFor绑定到字典
- ASP.NET 程序中删除文件夹导致session失效问题的
- asp.net – 如何访问Global.asax静态成员?
- asp.net-mvc – 使用输出缓存和其他动作过滤器
- asp.net-mvc 在IIS 5.1上部署ASP.NET MVC Window
- asp.net-core C 如何使用ASP.NET注册OData
- asp.net C MVC4 C ContextDependentView C
- asp.net-mvc-3 C 如何从ASP.NET MVC#输出中
- asp.net-mvc C 已经使用相同的参数类型定义
- ASP.Net C AJAX UpdatePanel中的Javascript
- asp.net-mvc C ASP.NET MVC中的WebApi [Fro
- asp.net-mvc C 使用AD的ASP.NET MVC表单Aut
- asp.net C 适用于多个用户的EWS通知中心
- asp.net-mvc C 未在ELMAH中记录的错误
- asp.net-mvc C MVC应用程序中的随机数生成