Asp.Net Mvc:无法从我的视图访问模型命名空间

8

所以我在Mvc项目的'models'文件夹中有一个ViewModel,命名空间为'Web.Models'(我的Mvc项目叫做'Web')。值得一提的是,我的解决方案中还有3个其他项目:Domain,Test和Tasks。 ViewModel从我的Domain.Entities文件夹中的类中分配属性。 当我在控制器中添加命名空间时,可以创建我的ViewModel的新实例。

using Web.Models;

然而,当我创建视图时,它似乎无法导入命名空间。实际上,它提示我通过“alt + enter”或“ctrl + dot”添加命名空间,但仍然无法解析对象。

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Web.Models.MyViewModel>" %>

我也尝试在Web.config中添加命名空间的全局引用,但没有成功。有什么建议吗?

3个回答

9

您可以将它添加到您的 web.config 中,位于 system.web/pages/namespaces 下。例如:

...
<namespaces>
    ...
    <add namespace="Web.Models"/>
</namespaces>
...

这就是我创建“Global”命名空间时所指的,但它被添加到我的Web.confing命名空间中。 - Justin Soliz
1
救了我的命!非常感谢! - SamuraiJack

1

首先,编译您的应用程序,然后确保MyViewModel是公共的。


已经编译了多次并且是公共的。 - Justin Soliz
它“应该”可以工作。尝试在视图本身中添加一个显式的包含语句: <%@ Import Namespace="Web.Models" %> - Clicktricity
我也尝试过了。我的解决方案中有4个项目,我在想是否在这方面漏掉了什么。 - Justin Soliz
视图是否与模型位于不同的项目中?您是否在项目之间添加了项目引用?(现在只是想方设法!) - Clicktricity
我知道这很奇怪...真正奇怪的是,这个类在控制器中可用,但在视图中却不可用。我可以让它工作,我已经将命名空间更改为system.web.mvc,同时将其移动到我的域项目并将命名空间更改为domain.models。我想这只是一个烦恼点(而且真的很奇怪,以前从未发生过)。 - Justin Soliz
模型需要是一个公共类!现在你指出来了,这么简单又有意义。这是错误的一个原因。非常感谢你的答案。 - Catto

1
发现这与我的ReSharper版本有关,我升级到了5.1版本,解决了我猜测是某种“缓存错误”的问题。

我清除了Resharper的缓存,所以这也是我的问题。我最近将视图模型命名空间移动到Web配置中,但它不喜欢它。 - Cody

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接