MVC 4 - Скрыть контроллер в URL - PullRequest
       9

MVC 4 - Скрыть контроллер в URL

0 голосов
/ 09 декабря 2018

У меня есть регистр области маршрутизации:

public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "MyArea_default",
            "MyArea/{action}/{id}",
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            namespaces: new string[] { "market.Areas.MyArea.Controllers" }
        );
    }

Работает так, все нормально:

localhost: MyArea / ActionName

Но я нажал F5 (в Visual Studio), когда выбрал определенный вид, а затем URL-адрес:

localhost: MyArea / Home / ActionName

Так как может работать без имени контроллерав URL, когда я нажимаю f5, если выбран конкретный вид?

Ответы [ 2 ]

0 голосов
/ 09 декабря 2018

Что я понимаю из вашего кода:

localhost: MyArea / ActionName => Будет использовать homeControllerClass с методом ActionName.

localhost: MyArea / Home / ActionName => Не будет работать, так как оноиспользует homeControllerClass, но с ActionName "Home" !!То есть он ищет домашний метод в homeControllerClass.

От вас код: "MyArea / {action} / {id}" new {controller = "Home", action = "Index", id = UrlParameter.Необязательно}

=> Это подразумевает использование класса homecontroller для запросов MyArea с именем действия по умолчанию для индекса, если действие не указано.Поэтому, если вы используете MyArea / Home =>, он будет использовать homeController, но с действием «Home».

{Controller} / {Action}

0 голосов
/ 09 декабря 2018

Существует много решений. Самый простой из них - использовать атрибут маршрута костюма

...