gpt4 book ai didi

asp.net - _ViewStart 未在自定义 ViewEngine 后使用

转载 作者:行者123 更新时间:2023-12-01 03:58:55 25 4
gpt4 key购买 nike

有谁知道 _ViewStart.cshtml 不会被 MVC 3 中的自定义 ViewEngine 选中是否有原因?

我的观点现在住在

~\用户界面\ View \

~\UI\Views\Shared\

ViewStart 位于 ~\UI\Views_ViewStart.cshtml。

我已经清除了现有的 RazorViewEngine 并将其替换为我在 global.asax 中的,并且所有 View 都正确解析,除非我在每个 View 中单独指定它,否则没有应用任何布局页面。

我的引擎路径格式代码是:

        this.ViewLocationFormats = new[]
{
"~/UI/Views/{1}/{0}.cshtml",
"~/UI/Views/Shared/{0}.cshtml"
};

this.PartialViewLocationFormats = new[]
{
"~/UI/Views/Shared/{0}.cshtml",
"~/UI/Views/Shared/Partial/{0}.cshtml",
"~/UI/Views/{1}/Partial/{0}.cshtml"
};

this.AreaMasterLocationFormats = new[]
{
"~/UI/Views/Admin/Shared/{0}.cshtml"
};

this.AreaPartialViewLocationFormats = new[]
{
"~/UI/Views/Admin/Shared/{0}.cshtml",
"~/UI/Views/Admin/Shared/Partial/{0}.cshtml"
};

this.AreaViewLocationFormats = new[] { "~/UI/Views/Admin/{1}/{0}.cshtml" };

this.MasterLocationFormats = new[]
{
"~/UI/Views/{1}/{0}.cshtml",
"~/UI/Views/Shared/{0}.cshtml"
};

提前致谢,
斯科特

最佳答案

不幸的是,这次愚蠢赢了。我的自定义 ViewEngine 基于我从文章中引用的一些代码。在文章中,他们详细介绍了 CreateView 的覆盖。它有一个 bool 参数 (runViewStartPages) 设置为 false 但由于它不是命名参数,我错过了它。

public class XyzViewEngine : RazorViewEngine
{
protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath)
{
return new RazorView(
controllerContext,
viewPath,
masterPath,
true, //<--- this drives whether to use _ViewStart pages. It was set to false
FileExtensions,
ViewPageActivator
);
}
}

关于asp.net - _ViewStart 未在自定义 ViewEngine 后使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14942995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com