Изменить структуру папок MVC в Visual Studio 2017 - PullRequest
0 голосов
/ 27 августа 2018

Ну, я пытаюсь разработать веб-проект, который первоначально будет содержать 2 модуля (приложения). Для этих приложений требуется иметь одинаковый базовый URL. Итак, это будет:

baseurlexample.com / module1 / индекс

baseurlexample.com / module2 / индекс

То, что я пытаюсь сделать, - это создать одно приложение со структурированным сценарием внутри него. Примерно так:

\ Project
..\ Application
..\..\ SharedClass
..\..\ Modules
..\..\..\ Module1
..\..\..\..\ Models
..\..\..\..\ Controllers
..\..\..\..\ Views
..\..\..\ Module2
..\..\..\..\ Models
..\..\..\..\ Controllers
..\..\..\..\ Views

Проблема в том, что стандартные конфигурации лесов MVC не позволяют мне этого делать. Каждый раз, когда я создаю Контроллер и пытаюсь добавить View из этого Контроллера, он будет создаваться в стандартной папке View.

Есть ли быстрый способ это исправить?

Есть ли лучший подход для этого, например, создание двух приложений и работа с маршрутами позже в IIS?

1 Ответ

0 голосов
/ 27 августа 2018

Похоже, вы ищете организацию папок на основе папки функций. Для контроллеров это довольно просто, так как это cs файл. Однако для просмотра необходимо написать новый движок видоискателя.

Вот пример,

public class FeatureFoldersRazorViewEngine : RazorViewEngine
{
    public FeatureFoldersRazorViewEngine()
    {
        var featureFolderViewLocationFormats = new[]
        {
            "~/Features/{1}/{0}.cshtml",
            "~/Features/{1}/{0}.vbhtml",
            "~/Features/Shared/{0}.cshtml",
            "~/Features/Shared/{0}.vbhtml",
        };

        ViewLocationFormats = featureFolderViewLocationFormats;
        MasterLocationFormats = featureFolderViewLocationFormats;
        PartialViewLocationFormats = featureFolderViewLocationFormats;
    }
}

Далее мы должны добавить наш недавно созданный FeatureFoldersRazorViewEngine в наше приложение.

public class Global : HttpApplication
{
    void Application_Start(object sender, EventArgs e)
    {
        // ...
        ViewEngines.Engines.Clear();
        ViewEngines.Engines.Add(new FeatureFoldersRazorViewEngine());
    }
}

Чтобы узнать больше, просто нажмите "Папка с функциями в Asp"

...