Как я могу получить параметры расширенной маршрутизации URL-адресов?

Теперь он работает как localhost/Controller/Action, но я хочу, чтобы он работал как localhost/MainFolder/SubFolder/Controller/Action.

потому что мне нужно получить имя моей основной папки и подпапки; нравится

RouteData routeData = htmlHelper.ViewContext.RouteData;
string currentAction = routeData.GetRequiredString("action");
string currentMainFolder = routeData.GetRequiredString("mainFolder");
string currentSubFolder = routeData.GetRequiredString("subFolder");

Коды MyViewEngine;

    public class MyViewEngine: RazorViewEngine
{
    private static string[] NewViewFormats = new[] { "~/Views/MainFolder/SubFolder/{1}/{0}.cshtml" };

    public MyViewEngine()
    {
        base.ViewLocationFormats = base.ViewLocationFormats.Union(NewViewFormats).ToArray();
    }
}

Мой RouteConfig.cs

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Panel", action = "Index", id = UrlParameter.Optional }
        );

        ViewEngines.Engines.Add(new MyViewEngine());
    }

Папка «Мои просмотры»;

введите здесь описание изображения

Папка «Мои контроллеры»;

введите здесь описание изображения


person yusuf    schedule 05.03.2013    source источник


Ответы (1)


Маршруты MVC не основаны на файловой системе, как старые сайты ASP.NET. Все контроллеры регистрируются при компиляции, и маршрут просто выбирает контроллер с соответствующим именем. Где находится контроллер в вашей файловой системе, не имеет значения.

person Chris Pratt    schedule 05.03.2013