如何在 Core 中更改视图组件 ASP.NET 视图路径?



我想实现像下面结构这样的视图组件。

ViewComponents
-> Modal
---> ModalViewComponent.cs
---> Modal1ViewComponent.cs
---> Modal2ViewComponent.cs

我的视图结构

Shared
-> Components
---> Modal
------> Modal.cshtml
------> Modal1.cshtml
------> Modal2.cshtml

ModalViewComponent是我的基本视图组件,我从中调用基于相同模型的其他视图组件。

我想将所有模式视图放在Modal文件夹中,派生视图组件解析为具有相同名称的视图。

您可能知道,对此的教科书解决方案通常是实现一个IViewLocationExpander,其中您的ExpandViewLocations()解析Type.Namespace属性以动态扩展搜索位置。这很容易实现。

不幸的是,Core 3.x ASP.NET 有一个限制(我会说一个错误(,它无法满足视图组件的这些扩展器。ASP.NET Core团队意识到了这个限制,最初希望将修复程序压缩到Core 3.1 ASP.NET。这个功能后来被推迟到 ASP.NET Core 5.0,但这也没有实现。

从那以后,Microsoft已经关闭了这个问题,并表示他们不会解决这个问题。

不幸的是,如果没有这种支持,这不是您可以(轻松(更改的。

最新更新