我正在尝试在我的 .cshtml 文件中使用自定义命名空间中的模型。但是,每当我尝试设置模型时,Razor 都会引发The type or namespace name could not be found
错误。
我有一个项目设置,它使用解决方案文件夹来帮助组织,如下所示:
MyViewModel.cs 文件中的代码如下所示:
namespace MyProject.ViewModels
{
public class MyViewModel
{
}
}
好的,这就是基本的布局。问题是当我尝试MyViewModel
在我的 Razor 视图中使用该对象时,Razor 说它找不到命名空间。如此处所示:
我相信我正在按照我应该的方式做每一件事。似乎 Razor 无法查看解决方案文件夹。如何让MyViewModel
Razor 识别对象?有什么我想念的吗?
请注意:我确实意识到我可以简单地更改我的@using
声明以引用整个路径。但是,在我的项目中,我在 ViewModels 文件夹中有许多解决方案文件夹,我不想逐个指定。
更新
我接受了达林的回答,因为它成功地回答了这个问题。我还在下面提供了一些关于我的具体情况以及为什么会出现这个问题的更多信息。
我进一步研究了这个问题,并弄清楚发生了什么。我通常使用 SparkViewEngine,它允许像这样引用我的视图模型:<viewdata model="ViewModels.MyViewModel"/>
当 Razor 不允许我以相同的方式引用视图模型时,我认为 Razor 有问题。
每个 ViewEngine 创建用于帮助生成视图的临时 CS 文件。Spark 创建的临时文件使用“控制器”命名空间。在这种情况下,Spark 会MyProject.Controllers
在其临时 CS 文件中使用命名空间。这意味着我可以在ViewModels.MyViewModel
不指定完整命名空间的情况下引用该对象,因为它与生成的 CS 文件位于同一命名空间中。
Razor 生成的临时文件使用ASP
命名空间。这意味着我无法在ViewModels.MyViewModel
不指定完整命名空间的情况下引用该对象,因为它与生成的 CS 文件不在同一个命名空间中。