Je suis totalement perdu et confus sur la façon d'utiliser le nouveau fortement typé Html.DropDownListFor d'aide sur le ASP.NET MVC 2.0 R2
Dans le point de Vue, je suis d'écriture:
<%= Html.DropDownListFor(m => m.ParentCategory, new SelectList(Model.Categories, "CategoryId", "Name", Model.ParentCategory), "[ None ]")%>
<%= Html.ValidationMessageFor(m => m.ParentCategory)%>
et mon Modèle objet 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, de dire le premier point, j'ai le ValidationMessageFor d'erreur "La valeur '1' n'est pas valide."
J'ai donc changer la Vue...
<%= Html.DropDownListFor(m => m.ParentCategory.**CategoryId**,
new SelectList .../ snip ) %>
Maintenant, il fonctionne un peu comme ça. Le ParentCategory bien dans mon ViewModel est défini avec la bonne "CategoryId", mais le " Nom " est NULL. Suis-je mieux d'avoir un nullable int pour ParentCategory propriété au lieu d'un typage fort "Catégorie" de l'objet?