2012-11-07 67 views
5

我想添加一個下拉列表到一個強類型的剃刀視圖。 ASP.Net MVC 4.0,Razor視圖引擎版本2.0.0.0ASP.NET MVC 4 Razor視圖不能識別DropDownlistfor HTML Helper

@using System; 
@model SampleApp.Models.ServiceRequestModel 

@{ 
    ViewBag.Title = "ServiceRequest"; 
} 

@Html.DropDownListFor(m=>m.CategoryID, Model.Categories) 

和模型如下:

public class ServiceRequestModel 
{ 
    public int ID { get; set; } 
    public int CategoryID { get; set; } 

    public SelectList Category { get; set; } 
} 

它總是顯示CSHTML文件中的智能感知一個錯誤:

System.Web.WebPages.Html.HtmlHelper'不包含'DropDownListFor'的定義,並且沒有找到接受'System.Web.WebPages.Html.HtmlHelper'類型的第一個參數的擴展方法'DropDownListFor'(你是否錯過了使用di rective集引用)

而且它給錯誤爲:?

錯誤3在目前的情況下不存在名稱「模型」

我已簽在web.config中查看文件夾:

<system.web.webPages.razor> 
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.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> 

+0

你找到這個問題的任何解決方案了嗎? – Tariqulazam

+0

是的,這是解決。上述配置中的Host工廠的行指向錯誤的版本,它應該是3.0.0.0,如下所示:

+1

你介意提供這個答案嗎?它將幫助有類似問題的用戶。 – Tariqulazam

回答

1

的配置代碼的下面一行不得不改爲4.0.0.0

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, **Version=3.0.0.0**, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 

改爲

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, **Version=4.0.0.0**, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
1

我花了一整天的時間錯誤,它結束了一個數據與下拉列表的VM數據源鍵入衝突(即,它不是IEnumerable類型的列表)。出於某種原因VS2012認爲錯誤與名稱空間一樣,即使它出現在Intellipath中。

0

我有這個確切的問題(僅適用於html.displayFor)。

我不知道它是如何開始,但我通過更換以下解決它:

<appSettings> 
    <add key="webpages:Enabled" value="false" /> 
</appSettings> 

<appSettings> 
    <add key="webpages:Version" value="3.0.0.0" /> 
</appSettings> 
在查看文件夾中的Web.config文件

發現我的解決方案here

相關問題