Я использую Visual Studio 2017 и .NET Core 2.2.
Выполните следующие действия:
- Новый проект и выберите Базовое веб-приложение ASP.NET (нажмите ОК)
- Откроется второе диалоговое окно, в котором вы можете выбрать Веб-приложение (например, Razor Pages) или Веб-приложение (Model-View-Controller).
Я хочу указать на одно различие между этими двумя вариантами, глядя на Startup.cs:
Если вы выберете только веб-приложение, вы получите его в нижней части функции настройки:
app.UseMvc();
Если вы выберете Веб-приложение (Model-View-Controller), вы получите следующее:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
Итак, проект MVC определяет некоторый тип маршрутизации. Что, в частности, говорит мне, что он будет использовать Home Controller по умолчанию, и если действие не указано, будет использовано действие Index (.cshtml).
Первый вариант (Razor pages), ничего не маршрутизирует.
Я не понимаю. Означает ли это, что если вы не определите MapRoute, он всегда будет использовать действие Index (.cshtml)?
Потому что в проекте MVC, если бы я использовал просто:
app.UseMvc();
и не определил MapRoute, я бы получил 404. Как приложение Razor определяет его маршрутизацию (и где)?