gpt4 book ai didi

asp.net-mvc - ASP.NET MVC : Multiple View Folders and _ViewStart. cshtml 文件

转载 作者:行者123 更新时间:2023-12-04 17:37:00 26 4
gpt4 key购买 nike

我有一个 MVC 项目,需要有 2 个不同的 View 文件夹。一个是在 ~/Views/和一个在 ~/Framework/Views/ .这是通过创建一个基于 razor View 引擎的自定义 View 引擎来完成的,如下所示:

public class MyViewEngine : RazorViewEngine
{
private static string[] AdditionalViewLocations = new[]{
"~/Framework/Views/{1}/{0}.cshtml",
"~/Framework/Views/{1}/{0}.vbhtml",
"~/Framework/Views/Shared/{0}.cshtml",
"~/Framework/Views/Shared/{0}.vbhtml"
};

public MyViewEngine()
{
base.PartialViewLocationFormats = base.PartialViewLocationFormats.Union(AdditionalViewLocations).ToArray();
base.ViewLocationFormats = base.ViewLocationFormats.Union(AdditionalViewLocations).ToArray();
base.MasterLocationFormats = base.MasterLocationFormats.Union(AdditionalViewLocations).ToArray();
}
}

问题是我想在 2 个 View 文件夹中的每一个中使用不同的 _ViewStart.cshtml 文件(即 ~/Views/_ViewStart.cshtml 用于在 ~/Views/ 文件夹中找到的 View 和 ~/Framework/Views/_ViewStart.cshtml 用于在 ~/Framework/Views/ 文件夹中找到的 View ),然而, View 引擎只使用它找到的第一个,它是 ~/Views/ 中的原始 View 。 .

这是可能的吗?

谢谢

最佳答案

这绝对是可能的,我想你只是错过了一些东西。

我已经使用您提供的 View 引擎(逐字复制和粘贴)自己对此进行了测试。我没有看到和你一样的行为。我有两个 _ViewStart.cshtml文件,一个在 ~/Framework/Views/_ViewStart.cshtml ,还有一个在 ~/Views/_ViewStart.cshtml .

当我在 ~/Framework/Views/ 内运行 View 时,它使用 _ViewStart.cshtml在框架文件夹中。当我在 ~/Views/ 内运行 View 时,它使用 _ViewStart.cshtml在 View 文件夹中。

仔细检查 RazorViewEngine 中的代码使用 DotPeek 也证实了这正是它应该表现的方式。 View 引擎开始检入名为 _ViewStart.cshtml 的文件。在与正在呈现的 View 相同的文件夹中,然后沿着目录树向上走,直到它到达应用程序的根目录。

关于asp.net-mvc - ASP.NET MVC : Multiple View Folders and _ViewStart. cshtml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15282823/

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