Je reçois totalement perdu et confus sur la façon d'utiliser le nouvel assistant Html.DropDownListFor fortement typé sur ASP.NET MVC 2.0 R2ASP.NET MVC 2 - Html.DropDownListFor confusion avec ViewModel
Dans la vue I « m éCRITURE:
<%= Html.DropDownListFor(m => m.ParentCategory, new SelectList(Model.Categories, "CategoryId", "Name", Model.ParentCategory), "[ None ]")%>
<%= Html.ValidationMessageFor(m => m.ParentCategory)%>
et mon objet modèle est donc:
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; }
}
}
le problème est que lorsque je sélectionne un élément dans la liste déroulante, par exemple le premier élément, je reçois le Valida suivant Erreur "tionMessageFor" "La valeur '1' n'est pas valide."
Je changer la vue de ...
<%= Html.DropDownListFor(m => m.ParentCategory.**CategoryId**,
new SelectList .../ snip ) %>
Maintenant, il fonctionne, un peu. La propriété ParentCategory de mon ViewModel est définie avec le 'CategoryId' correct mais le 'Name' est NULL. Suis-je préférable d'avoir juste un int nullable pour la propriété ParentCategory au lieu d'un objet 'Category' fortement typé?
Ceci est un bonne façon d'utiliser DropDownListFor - http://stackoverflow.com/questions/3386998/dropdownlistfor-display-a-simple-list-of-strings – bcahill