2012-01-11 162 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

相關問題