【问题标题】:How to change default view creation logic in visual studio?如何在 Visual Studio 中更改默认视图创建逻辑?
【发布时间】:2014-08-13 16:42:30
【问题描述】:

我已经查看了 herehere 来尝试回答这个问题以及十亿次 Google 搜索,但还没有找到解决方案。

我的目录结构是一个multi-tenant MVC site 和一个overridden view engine,它使用Areas 为共享许多共同逻辑served globally from the base controllers and views folders 的不同主机提供内容。我们更进一步,将不同的global site sections 分解为new folder called SiteSections。在这个文件夹中,我们有更多的区域。

我遇到的问题是,每当我尝试从 SiteSections 文件夹内的控制器内部使用 Visual Studio 上下文菜单时,它总是将其添加到全局 Views 文件夹中。

我假设正在发生的是,由于这些 Areas 保存在不同的目录中,Visual Studio 正在 Areas 文件夹中搜索 Area 与我正在工作的名称。因为这是保存在不同的目录中,它只是默认为global 之一。我查看了所有不同的T4 templates 并没有看到任何指定创建视图的目录的内容。

我只有一个问题,我希望这是可能的。

如何覆盖 Visual Studio 以在第二个目录中查找相关区域?

提前致谢!

【问题讨论】:

    标签: visual-studio-2013 asp.net-mvc-5 overriding


    【解决方案1】:

    我经历过类似的事情,不是区域,而是文件夹。

    您是否尝试在 ViewEngines 上添加自定义视图引擎?

    我遵循的步骤:

    1 - 我将这一行放在 Global.asax.cs 的 Application_Start 方法上: ViewsEngines.Engines.Add(new MyCustomViewEngine());

    2 - 我创建了名为 MyCustomViewEngine 的文件,继承自 RazorViewEngine,例如:

    public class MyCustomViewEngine : RazorViewEngine
    {
        public MyCustomViewEngine()
        {
            base.ViewLocationFormats = MyViewLocationFormats;
        }
    
        private static string[] MyViewLocationFormats = new[]
        {
            "~/Views/Folder/{0}.cshtml",
            "~/Views/Folder_1/Folder_2/{0}.cshtml"
        }
    }
    

    我认为你可以这样使用:"~/Areas/Views/Folder/{0}.cshtml",

    希望这会有所帮助!

    【讨论】:

    • 我有一个自定义 ViewEngine,我可以毫无问题地配置它以正确提供文件。我的问题是 Visual Studio 以及当我使用上下文菜单并选择“添加视图”时它在哪里创建文件。如果有,它总是覆盖全局文件。
    猜你喜欢
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多