9

Tengo un problema bastante simple que tiene una solución que no puedo encontrar.Problemas para obtener DropDownListFor para trabajar en EditorFor en MVC3

Dado el siguiente modelo:

public class InfoViewModel 
{ 
    public SelectList States { get; set; } 

    [DisplayName("State")] 
    public string State { get; set; } 
} 

La siguiente funciona bien en mi opinión:

@Html.DropDownListFor(m => m.State, Model.States) 

Sin embargo, si trato de sacar esto en un editor de plantillas (llamado "SelectList"), tales como:

@model System.String 
@Html.DropDownListFor(m => m, ViewData["selectList"]) 

y luego usar EditorFor para construir la lista desplegable:

@Html.EditorFor(m => m.State, "SelectList", new { selectList = Model.States }) 

Se produce un error con el siguiente error:

'System.Web.Mvc.HtmlHelper<string>' does not contain a definition for 
'DropDownListFor' and the best extension method overload 
'System.Web.Mvc.Html.SelectExtensions.DropDownListFor<TModel,TProperty> 
(System.Web.Mvc.HtmlHelper<TModel>, 
System.Linq.Expressions.Expression<System.Func<TModel,TProperty>>, 
System.Collections.Generic.IEnumerable<System.Web.Mvc.SelectListItem>)' 
has some invalid arguments 

estoy teniendo dificultades para comprender la diferencia entre estos dos. Intenté varias soluciones para solucionar problemas y obtuve el mismo error u otra cosa.

Gracias de antemano.

+0

gracias ..., su quetion son tan útil para mi respuesta /// –

Respuesta

10

No existe tal sobrecarga:

@Html.DropDownListFor(m => m, ViewData["selectList"]) 

El segundo parámetro de la humedad DropDownListFor ayudante ser un SelectList. Por lo tanto:

@Html.DropDownListFor(m => m, (SelectList)ViewData["selectList"]) 
+0

Gracias, Darin, que era exactamente la misma. Debería haberme dado cuenta de eso. –

Cuestiones relacionadas