我正在研究.Net项目,并且我正在使用 _ViewImports.cshtml 文件导入我拥有的许多 ViewModels 的命名空间。与official documentation中描述的类似。
有没有办法只导入父命名空间,例如@using WebApplication1.ViewModels
并且可以在剃刀视图中访问它的视图模型:
@model Home.HomepageViewModel
或@model About.AboutViewModel
到目前为止,我没有设法做到这一点,我的_ViewImports.cshtml文件中有一个很长的命名空间列表(不要太在意,但如果可能的话,只需要导入例如WebApplication1就可以了。 ViewModels并可以访问它的视图模型。)
TNX!
答案 0 :(得分:3)
Razor并不聪明地理解那种" partial"模型的命名空间
如果您在ViewImports中定义@using App.ViewModels
,并且您的实际视图模型位于App.ViewModels.Home.HomeVM
,则您无法使用@model Home.HomeVM
(省略App.ViewModels),Razor无法弄清楚它是App.ViewModels
命名空间(前缀模型命名空间)的一部分。
我猜这是因为Razor不知道要使用什么前缀,你可以在ViewImports中拥有50个@usings,而Razor必须经历每一个,然后如果你如果不同的名称空间具有相同的类名,则无法知道要使用哪个...
您必须在_ViewImports文件中具有完整路径,或在视图中具有完整路径。