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

c# – 在MVC中清除视图引擎会破坏站点地图的面包屑样式

发布时间:2020-12-15 22:19:15 所属栏目:百科 来源:网络整理
导读:在我正在开发的MVC 5 Web应用程序中,出于性能考虑,我正在清理视图引擎,并使用ViewEngines.Engines.Clear()在Global.asax.cs中仅添加RazorViewEngine;它打破了mvc sitemap面包屑中的样式 之前 后 我的站点地图局部视图(SiteMapPathHelperModel.cshtml)看起来
在我正在开发的MVC 5 Web应用程序中,出于性能考虑,我正在清理视图引擎,并使用ViewEngines.Engines.Clear()在Global.asax.cs中仅添加RazorViewEngine;它打破了mvc sitemap面包屑中的样式

之前

enter image description here

enter image description here

我的站点地图局部视图(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视图引擎.

(编辑:李大同)

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

    推荐文章
      热点阅读