Me estoy totalmente perdido y confundido sobre cómo utilizar el nuevo ayudante Html.DropDownListFor inflexible sobre ASP.NET MVC 2.0 R2ASP.NET MVC 2 - Html.DropDownListFor confusión con el modelo de vista
En la vista de lo 'm ESCRITURA:
<%= Html.DropDownListFor(m => m.ParentCategory, new SelectList(Model.Categories, "CategoryId", "Name", Model.ParentCategory), "[ None ]")%>
<%= Html.ValidationMessageFor(m => m.ParentCategory)%>
y mi objetivo es, pues, Modelo:
public class CategoryForm : FormModelBase
{
public CategoryForm()
{
Categories = new List<Category>();
Categories.Add(new CategoryForm.Category() {
CategoryId = 1,
Name = "CPUs" });
Categories.Add(new CategoryForm.Category() {
CategoryId = 2,
Name = "Memory" });
Categories.Add(new CategoryForm.Category() {
CategoryId = 3,
Name = "Hard drives" });
}
// ...other props, snip... //
public Category ParentCategory { get; set; }
public IList<Category> Categories { get; protected set; }
public class Category
{
public int? CategoryId { get; set; }
public string Name { get; set; }
}
}
el problema es que cuando selecciono un elemento de la lista desplegable, dice el primer artículo, me sale el siguiente Valida tionMessageFor error "El valor '1' no es válido."
Por lo tanto, cambiar la vista a ...
<%= Html.DropDownListFor(m => m.ParentCategory.**CategoryId**,
new SelectList .../ snip ) %>
ahora funciona, un poco. La propiedad ParentCategory en mi ViewModel se establece con la correcta 'CategoryId' pero el 'Name' es NULL. ¿Sería mejor que solo tuviera una int nullable para la propiedad ParentCategory en lugar de un objeto 'Category' fuertemente tipado?
Se trata de una buena forma para el usuario DropDownListFor - http://stackoverflow.com/questions/3386998/dropdownlistfor-display-a-simple-list-of-strings – bcahill