Как мне изменить значения маршрута, чтобы изменить строку URL в браузере

#asp.net-mvc #routes #routeconfig

#asp.net-mvc #маршруты #настройка маршрута

Вопрос:

Я создал две области (с контроллерами, представлениями, регистрацией и т.д.) С помощью процесса создания лесов VS. Один для homecontroller и один под названием account.

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

Я добавил одну строку «маршрут.DataTokens» в файл routeconfig.cs для подключения к homecontroller при запуске.

 var route = routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional }
);
route.DataTokens["area"] = "Home";
  

Вот мой метод HomeAreaRegistration.cs RegistrationArea

 public override void RegisterArea(AreaRegistrationContext context) 
{
    context.MapRoute(
        "Home_default",
        "Home/{controller}/{action}/{id}",
        new { action = "Index", id = UrlParameter.Optional }
    );
}
  

Но в URL браузера я вижу

https://localhost:44301/Home/Home/Index

Что я хочу видеть, так это

https://localhost:44301/Home/Index

Что мне изменить, чтобы получить это?

Редактировать — решено! Я думаю. Вот что я сделал. В HomeArearegistration.cs я удалил Home/

 public override void RegisterArea(AreaRegistrationContext context) 
{
    context.MapRoute(
        "Home_default",
        "{controller}/{action}/{id}",
        new { action = "Index", id = UrlParameter.Optional }
    );
}
  

Это правильный способ сделать это, потому что что-то здесь кажется неправильным, если я набираю

 https://localhost:44301/Home/Index.cshtml
  

который, как я ожидал бы, приведет меня на домашнюю страницу, я получаю сообщение об ошибке HTTP 404 not found, но если я наберу

 https://localhost:44301/Home/Index
  

Это приведет меня на домашнюю страницу

Комментарии:

1. ../Home/Index.cshtml не работает, потому что маршрутизация MVC работает путем перехода к методам действий, а не к файлам.

2. хорошо, возможно, я просто не совсем понимаю маршрутизацию. Но позвольте мне задать этот вопрос. Иногда, когда страница не найдена, я вижу сообщение, в котором говорится что-то вроде «Страница не найдена после ввода ~ /Home/Index.html, ~Home /Index.cshtml и т.д. и т.п. «, Так разве я не должен иметь возможность ввести один из этих путей и, предполагая, что он маршрутизирован правильно, подключиться к pag? . Например. если я введу localpath /Home / Index.cshtml, я должен перейти на страницу?

3. Нет. MVC работает путем перехода к методам действий, а не к файлам. Итак, переход к ../Home/Index приведет вас к Index() методу HomeController , который возвращает представление (с помощью return View(); )

4. хорошо, спасибо вам за объяснение