c# – 在MVC中清除视图引擎会破坏站点地图的面包屑样式
在我正在开发的MVC 5 Web应用程序中,出于性能考虑,我正在清理视图引擎,并使用ViewEngines.Engines.Clear()在Global.asax.cs中仅添加RazorViewEngine;它打破了mvc sitemap面包屑中的样式
之前 后 我的站点地图局部视图(SiteMapPathHelperModel.cshtml)看起来像 @model MvcSiteMapProvider.Web.Html.Models.SiteMapPathHelperModel @using System.Web.Mvc.Html @using System.Linq @using MvcSiteMapProvider.Web.Html.Models <ol class="breadcrumb"> @foreach (var node in Model) { if (node == Model.Last()) { <li class="active"> <strong>@Html.DisplayFor(m => node)</strong> </li> } else { <li> @if (node.Title == "Home") { <a href="/"><i class="fa fa-lg fa-home"></i></a> } else { @Html.DisplayFor(m => node) } </li> } } </ol> 不知何故,它似??乎回落到另一个实现而不是视图下的部分>分享>显示模板 可能是什么原因? 编辑 我在这里错过了一些重要的信息,另一个开发人员在Application_Start()的底部完成了这个 ViewEngines.Engines.Add(new RazorViewEngine { PartialViewLocationFormats = new string[] { "~/Areas/Shared/{0}.cshtml",} }); 解决方法
我没有看到您提供的信息存在问题,但我的猜测是您没有清除并在Application_Start方法中设置视图引擎.
public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { ViewEngines.Engines.Clear(); ViewEngines.Engines.Add(new RazorViewEngine()); AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } } 请注意,当/ Views / Shared / DisplayTemplates /文件夹中没有视图时,内部MvcSiteMapProvider引擎用于备份.在这种情况下,它将从DLL中提供默认模板,这似乎是在这里发生的. 如果您的Razor视图引擎在内部视图引擎之后注册,则可能发生这种情况.因此,如果您在Application_Start中没有此代码(如您所愿),那么您可以尝试插入Razor视图引擎以确保它放在MvcSiteMapProvider回退引擎之前. ViewEngines.Engines.Clear(); ViewEngines.Engines.Insert(0,new RazorViewEngine()); 或者如前所述,只需在一个操作中删除网页视图引擎即可. ViewEngines.Engines.RemoveAt(0); 第一次调用MvcSiteMapProvider HTML帮助程序时注册内部视图引擎.因此,如果您在该点之后调用add方法,则在内部MvcSiteMapProvider视图引擎之后添加Razor视图引擎. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |