我正在.Net项目上,正在使用_ViewImports.cshtml文件为我拥有的许多ViewModel导入名称空间.类似于在official documentation处描述的内容.
有没有办法只导入父名称空间@using WebApplication1.ViewModels并可以在razor视图中访问它的视图模型:
> @model Home.HomepageViewModel或
> @model关于.AboutViewModel
到目前为止,我还没有做到这一点,并且我的_ViewImports.cshtml文件中有很长的名称空间列表(不要介意,但是如果可以的话,例如导入WebApplication1.ViewModels并可以访问这是视图模型).
天哪!
解决方法:
Razor不太了解模型的“部分”名称空间.
如果您在ViewImports中定义@using App.ViewModels,而实际的视图模型位于App.ViewModels.Home.HomeVM中,那么您将无法使用@model Home.HomeVM(忽略App.ViewModels),Razor无法弄清楚是App.ViewModels命名空间(前缀模型命名空间)的一部分.
我猜这是因为Razor不知道使用什么前缀,您在ViewImports中可以有50个@using,而Razor则必须遍历每个前缀,然后如果您使用相同的类名(如果使用不同的名称空间),则不能知道使用哪个…
您必须在_ViewImports文件中具有完整路径,或者在视图中必须具有完整路径.