2012-11-07 3 views
5

Ich versuche eine Dropdown-Liste zu einer stark typisierten Rasiereransicht hinzuzufügen. ASP.Net MVC 4.0, Rasierer Ansicht Motor Version 2.0.0.0ASP.NET MVC 4 Razor-Ansicht erkennt Dropdownliste für HTML-Hilfsprogramm nicht

@using System; 
@model SampleApp.Models.ServiceRequestModel 

@{ 
    ViewBag.Title = "ServiceRequest"; 
} 

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

und das Modell ist wie folgt:

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

    public SelectList Category { get; set; } 
} 

es wird immer einen Fehler in Intellisense in CSHTML Datei zeigt, wie:

System.Web.WebPages.Html.HtmlHelper 'enthält keine Definition für' DropDownListFor 'und es konnte keine Erweiterungsmethode' DropDownListFor 'gefunden werden, die ein erstes Argument vom Typ' System.Web.WebPages.Html.HtmlHelper 'akzeptiert (fehlt dir ein using di rective oder eine Montagereferenz)

und auch für sie wird geben Fehler:

Fehler 3 Der Name ‚Modell‘ existiert nicht im aktuellen Kontext

ich überprüft haben die web.config in Ordner anzeigen:

<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> 

zu diesem Fehler und es endete als ein Datum 10
+0

Haben Sie eine Lösung für dieses Problem gefunden? – Tariqulazam

+0

Ja, das ist gelöst. Die Zeile für die Host-Factory in der obigen Konfiguration verweist auf eine falsche Version. Sie sollte 3.0.0.0 lauten:

+1

Würde es Ihnen etwas ausmachen, dies als Antwort zu liefern? Es wird den Benutzern mit ähnlichen Problemen helfen. – Tariqulazam

Antwort

1

Die folgende Zeile von Konfigurationscode mußte 4.0.0.0

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

geändert

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

ich über einen Tag verbrachte geändert werden Geben Sie einen Konflikt mit der VM-Datenquelle für die Dropdownliste ein (dh, es war keine Liste vom Typ IEnumerable). Aus irgendeinem Grund dachte VS2012, dass der Fehler im Namespace enthalten war, obwohl er in Intellipath auftrat.

0

Ich hatte dieses genaue Problem (nur mit html.displayFor).

Ich bin nicht sicher, wie es begann, aber ich löste es durch das Ersetzen des folgenden:

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

mit

<appSettings> 
    <add key="webpages:Version" value="3.0.0.0" /> 
</appSettings> 

in der Datei Web.config des Ordners anzeigen.

meine Lösung gefunden here