【问题标题】:Importing namespaces in _ViewImports.cshtml在 _ViewImports.cshtml 中导入命名空间
【发布时间】:2016-12-20 16:10:58
【问题描述】:

我正在处理 .Net 项目,我正在使用 _ViewImports.cshtml 文件为我拥有的许多 ViewModels 导入命名空间。类似于official documentation 中描述的内容。 有没有办法只导入父命名空间,例如@using WebApplication1.ViewModels 并可以在剃刀视图中访问它的视图模型:

  • @model Home.HomepageViewModel
  • @model About.AboutViewModel

到目前为止,我还没有设法做到这一点,并且我的 _ViewImports.cshtml 文件中有一个很长的命名空间列表(不要介意,但如果可能只导入例如 WebApplication1.ViewModels 和可以访问它的视图模型)。

Tnx!

【问题讨论】:

  • 你试过按照你要求的方式做吗?
  • 是的,它对我不起作用。
  • 如果这是默认功能,不知道为什么我不能这样做(命名空间在我的剃刀视图中无法识别)。

标签: c# razor asp.net-core asp.net-core-mvc


【解决方案1】:

Razor 并不聪明,无法理解模型的那种“部分”命名空间。
如果你在 ViewImports 中定义了@using App.ViewModels,而你的实际视图模型在App.ViewModels.Home.HomeVM,那么你不能使用@model Home.HomeVM(省略App.ViewModels),Razor 无法判断它是App.ViewModels 命名空间的一部分(前缀模型命名空间)。

我猜那是因为 Razor 不知道要使用什么前缀,你可以在 ViewImports 中有 50 个 @using 并且 Razor 必须遍历它们中的每一个,然后如果你有相同的类名,如果不同的命名空间,不知道该用哪一个...

您必须在 _ViewImports 文件中具有完整路径,或在视图中具有完整路径。

【讨论】:

  • 原来是 50 个 @usings。 Tnx!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-11
  • 1970-01-01
  • 2021-02-26
  • 2021-10-03
  • 2012-11-27
  • 2010-09-05
  • 2017-01-25
相关资源
最近更新 更多