Как можно избежать именования моего ViewComponent cshtmls "Default.cshtml" в ASP.NET Core MVC?
Кажется, что в ASP.NET Core MVC, если я хочу использовать ViewComponent, я должен поместить их в Views\Shared\Components\[ViewComponentName]
и затем назовите файл "Default.cshtml".
Это довольно неприятно, так как в начале большого проекта, который я помогаю портировать из Perl CGI, я создаю большое количество ViewComponents, и в Visual Studio есть 5 вкладок с именем "Default.cshtml", что неинтересно. Есть ли способ избежать этого соглашения об именах? Может быть, даже вынуть их из папок, чтобы файл выглядел как Views\Shared\Components\[ViewComponentName].cshtml
?
Я не знаю, есть ли какие-то настройки, которые я могу настроить, или как. По большей части, я очень новичок в ASP.NET, все еще выясняю. Использование ASP.NET Framework вместо Core - вариант, хотя я бы предпочел этого не делать, так как большая часть шаблона уже сделана.
Документация по ViewComponents гласит:
Мы рекомендуем назвать файл представления Default.cshtml и использовать путь Views/Shared/Components/{Просмотреть имя компонента}/{Просмотреть имя}.
Это заставляет меня думать, что есть способ обойти это ограничение, но оно не определяет, как это будет работать или как это будет выглядеть.
Я прошу прощения, если я упустил что-то очевидное. Опять же, я действительно новичок в этом. Благодарю.
0 ответов
Как и Ник, я согласен, что наличие нескольких или десятков файлов с именем default.cshtml раздражает. Более того, наличие от нескольких до десятков папок с одним файлом в каждой папке.
Components/ViewComponentName/default.cshtml
Components/AnotherViewComponentName/default.cshtml
Components/AThirdViewComponentName/default.cshtml
et cetera
Я понимаю причины рекомендованного имени и местоположения... но я просто не согласен и приму последствия. Для тех, кто разделяет мое бесцеремонное отношение, View() позволяет указать имя View.
return View("Schools", items);
или даже указать путь к просмотру, если вы поместите его в нестандартное место
return View("/Pages/Components/Schools.cshtml", items);
Я использую Razor Pages, но уверен, что это работает и для Views/Shared/Components.