如何避免在 ASP.NET Core MVC 中将视图组件 cshtml 命名为“Default.cshtml”?

Nic*_*ada 5 asp.net-core-mvc asp.net-core asp.net-core-viewcomponent view-components

看来在 ASP.NET Core MVC 中,如果我想使用视图组件,我必须将它们放入Views\\Shared\\Components\\[ViewComponentName],然后将文件命名为“Default.cshtml”。

\n

这是相当令人沮丧的,因为在一个大型项目的开始,我正在帮助从 Perl CGI 进行移植,我正在创建大量的视图组件,并在 Visual Studio 中拥有五个选项卡,全部命名为Default.cshtml是令人困惑的。

\n

有什么办法可以避免这种命名约定吗?也许甚至可以将它们从文件夹中取出,以便文件看起来像\xe2\x80\xa6?

\n
Views\\Shared\\Components\\[ViewComponentName].cshtml\n
Run Code Online (Sandbox Code Playgroud)\n

我不知道是否只有一些设置可以调整或者什么。大多数情况下,我对 ASP.NET 非常陌生,并且仍在摸索中。使用 ASP.NET Framework 而不是 ASP.NET Core一种选择,但我不想这样做,因为很多样板已经完成。

\n

ViewComponents 的文档是这样说的:

\n
\n

我们建议您将视图文件命名为 Default.cshtml 并使用 Views/Shared/Components/{View Component Name}/{View Name} 路径。

\n
\n

这让我认为有一种方法可以绕过这个限制,但它没有具体说明它是如何工作的或者它会是什么样子。

\n

小智 9

和 Nic 一样,我也同意有几个到几十个名为 default.cshtml 的文件很烦人。更重要的是有几个到几十个文件夹,每个文件夹中只有一个文件

Components/ViewComponentName/default.cshtml  
Components/AnotherViewComponentName/default.cshtml  
Components/AThirdViewComponentName/default.cshtml  

et cetera
Run Code Online (Sandbox Code Playgroud)

我理解推荐名称和位置的原因...但我只是不同意并接受后果。对于那些和我一样傲慢态度的人来说,View() 允许您指定视图名称

return View("Schools", items);
Run Code Online (Sandbox Code Playgroud)

或者甚至指定视图的路径(如果将其放在非标准位置)

return View("/Pages/Components/Schools.cshtml", items);
Run Code Online (Sandbox Code Playgroud)

我正在使用 Razor Pages,但我确信这也适用于视图/共享/组件。