#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 браузера я вижу
Что я хочу видеть, так это
Что мне изменить, чтобы получить это?
Редактировать — решено! Я думаю. Вот что я сделал. В 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. хорошо, спасибо вам за объяснение