gpt4 book ai didi

c# - Razor 是否查看解决方案文件夹?

转载 作者:行者123 更新时间:2023-11-30 15:01:06 28 4
gpt4 key购买 nike

我正在尝试在我的 .cshtml 文件中使用来自自定义命名空间的模型。但是,每当我尝试设置模型时,Razor 都会抛出 The type or namespace name could not be found错误。

我有一个项目设置,它使用解决方案文件夹来帮助组织,如下所示: Shows the FolderStructure of MyProject

MyViewModel.cs 文件中的代码如下所示:

namespace MyProject.ViewModels
{
public class MyViewModel
{
}
}

好的,这就是基本布局。问题是当我尝试使用 MyViewModel我的 Razor View 中的对象,Razor 说它找不到命名空间。如此处所示: Razor cannot find the namespace

我相信我所做的一切都是我应该做的。似乎 Razor 无法查看解决方案文件夹。我怎样才能得到 MyViewModel Razor 识别的对象?有什么我想念的吗?

请注意:我知道我可以简单地更改我的 @using引用整个路径的语句。但是,在我的项目中,我在 ViewModels 文件夹中有许多解决方案文件夹,我不想逐一逐个指定。

更新

我接受了 Darin 的回答,因为它成功地回答了问题。我还在下面提供了一些关于我的具体情况以及为什么会出现这个问题的更多信息。

我进一步调查了这个问题,弄清楚了是怎么回事。我通常使用 SparkViewEngine,它允许像这样引用我的 View 模型:<viewdata model="ViewModels.MyViewModel"/>当 Razor 不允许我以同样的方式引用 View 模型时,我认为 Razor 有问题。

每个 ViewEngine 都会创建用于帮助生成 View 的临时 CS 文件。 Spark 创建的临时文件使用“controllers”命名空间。在这种情况下,Spark 会使用 MyProject.Controllers它的临时 CS 文件中的命名空间。这意味着我可以引用 ViewModels.MyViewModel对象而不指定完整的命名空间,因为它与生成的 CS 文件位于同一命名空间中。

Razor 生成的临时文件使用 ASP命名空间。这意味着我无法引用 ViewModels.MyViewModel未指定完整命名空间的对象,因为它与生成的 CS 文件不在同一命名空间中。

最佳答案

使用 @using 将声明 View 模型的命名空间添加到 Razor View 的顶部指令:

@using MvcApplication1.ViewModels
@model MyViewModel

同时为了避免在您想要使用它的每个 Razor View 中添加它,您可以将它添加到 <namespaces>你的部分~/Views/web.config文件(不要与 ~/web.config 混淆):

<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />

<add namespace="MvcApplication1.ViewModels" />
</namespaces>
</pages>
</system.web.webPages.razor>

另请注意我是如何指定完整命名空间的。在您显示的屏幕截图中,您似乎只使用了 ViewModels.MyViewModel但你确定这是正确的命名空间吗?通常当你在 Visual Studio 中添加一个类文件时,它会使用应用程序名称 + 文件夹作为命名空间的前缀,如 MvcApplication1.ViewModels .

关于c# - Razor 是否查看解决方案文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14665315/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com