2012-01-11 152 views
1

我在一个项目(我的web项目)中有一个MVC视图。我试图指定它应该从另一个项目中的类(模型)继承,但该类对于我的视图不可见。模型类的项目位于视图所在项目的引用中。为什么我的视图无法看到模型类?下面是完整的视图:MVC视图无法在单独项目中看到模型

<%@ Page Title="Title" 
    Language="C#" 
    Inherits="System.Web.Mvc.ViewPage<Models.PropertyDetailsModel>" 
    MasterPageFile="../MvcMasterPage.Master" %> 

Models.PropertyDetailsModel以红色highlighed,当我在它悬停,它说,它无法解析符号PropertyDetailsModel。

想法?

+0

您是否尝试构建模型类/项目? – 2012-01-11 21:14:48

+0

是的。我已经建立了很多次。仍然没有骰子。 – birdus 2012-01-11 21:24:41

回答

0

其实,所有我需要做的就是改变这种:

Inherits="System.Web.Mvc.ViewPage<Models.PropertyDetailsModel>" 

这样:

Inherits="System.Web.Mvc.ViewPage`1[Models.PropertyDetailsModel]" 

古怪!

4

在你~/web.config确保在<assemblies>部分你必须包含这个模型装配:

<assemblies> 
    ... 
    <add assembly="TheAssemblyContainingYourModel" /> 
</assemblies> 

然后运行该项目,看看它是否工作。不要注意红色的波浪曲线。视图中的Visual Studio Intellisense不被信任。

PS:在~/web.config还有一个<namespaces>部分,在那里你可以把包含您的模型的命名空间,这将干你的观点:

<pages> 
    <namespaces> 
     <add namespace="TheNamespaceContainingYourModel" /> 
    </namespaces> 
</pages> 

,然后你可以直接引用整个应用程序的所有你的意见而不需要模型完全限定它们:

<%@ Page Title="Title" 
    Language="C#" 
    Inherits="ViewPage<PropertyDetailsModel>" 
    MasterPageFile="../MvcMasterPage.Master" %> 
+0

我会为Version和PublicKeyToken做些什么? – birdus 2012-01-11 21:18:19

+0

@鸟,如果你的程序集没有强烈的签名,你不需要放任何东西。你可以留下这个名字。另一方面,如果您在GAC中拥有多个版本相同的程序集并且它被强烈签名,则必须指定完全限定的程序集名称。这与BCL装配完成的方式相同。 – 2012-01-11 21:21:10

+0

“无法加载文件或程序集,文件未找到。” 想法? – birdus 2012-01-11 21:22:44

相关问题