2013-06-19 49 views
0

任何人都可以幫助我糾正一個問題。我已經使用Visual Studio 2012中的NuGet方法從MVC3升級到MVC4。現在,儘管我聲明瞭它們的類型,但我的所有視圖的「視圖模型」都已變爲動態,但無法通過視圖上的intellisense訪問任何屬性...我所有的視圖模型已經成爲動態升級到MVC 4(剃鬚刀)

因此,例如:

public class MyPageModel{ 
public string Test {get;set;} 
} 

我的觀點:

@model MyPageViewModel 
<div> 
    @Model.Test 
</div> 

懸停在 「示範」 帶來了 「動態WebPage.Model」。 鼠標懸停在「Model.Test」帶來了

在其他常用庫「動態表情這種操作將在運行時解析」,我的項目引用2的這些版本: System.Web.Razor,System.Web程序.WebPages,System.Web.WebPages.Razor

我是否缺少參考?

此外,如果我的Viewmodel是IEnumerable (例如,

@model IEnumerable<MyPageViewModel> 

懸停在 「MyPageViewModel」 帶來了「驗證(HTML5)元素 'MyPageViewModel' 不支持

回答

0

確保您~/Views/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" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor> 
+0

這是行不通的。不過謝謝。 –

2

我首先遵循本頁的建議:

http://www.asp.net/whitepapers/mvc4-release-notes

沒有解決不了對我來說,讓我接着一個忠告,完全重寫了我的web.config中我的看法與此文件夾:

<?xml version="1.0"?> 

<configuration> 
    <configSections> 
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
     <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
    </sectionGroup> 
    </configSections> 
    <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" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor> 

    <system.web> 
    <pages 
     validateRequest="false" 
     pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <controls> 
     <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" /> 
     </controls> 
    </pages> 
    </system.web> 

    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 

    <handlers> 
     <remove name="BlockViewHandler"/> 
     <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> 
    </handlers> 
    </system.webServer> 
</configuration> 

這解決了我的問題。

0

檢查您的web.config對LovelyBananas發佈的內容。對我來說,它也是/ Views文件夾中的web.config。一樣。它仍然有引用MVC 3.0.0.0後,我做了nuget安裝MVC4安裝...

相關問題