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

标签 asp.net-mvc asp.net-mvc-3 razor viewengine

我有一个 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/

相关文章:

javascript - 使用 Razor 参数进行 JQuery Post Ajax 调用

javascript - 在 .NET 应用程序中,是否有可能获得 Web 浏览器看到的 DOM 表示形式?

c# - 'System.Data.Entity.Migrations.DbMigrationsConfiguration` 1' 的类型初始值设定项抛出异常

jquery - MVC4 Razor 中的 Dropdownlist SelectedItemChanged 事件?

c# - 将 VIEW 作为 STRING 传递

asp.net-mvc-3 - Azure 和 HttpHandler

asp.net-mvc - 使用小写键从 MVC View 编码 JSON?

c# - 在 Razor 应用程序中将参数从模型传递到 Controller

c# - 从 Razor 获取 Controller 名称

css - MVC 3、CSS、Razor 和 Visual Studio 2010