Я полностью теряюсь и смущен тем, как использовать новый строго типизированный Html.DropDownListFor помощник на ASP.NET MVC 2.0 R2
В представлении, которое я пишу:
<%= Html.DropDownListFor(m => m.ParentCategory, new SelectList(Model.Categories, "CategoryId", "Name", Model.ParentCategory), "[ None ]")%>
<%= Html.ValidationMessageFor(m => m.ParentCategory)%>
и мой объект Model таким образом:
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; }
}
}
Проблема заключается в том, что когда я выбираю элемент из раскрывающегося списка, скажем, первый элемент, я получаю следующую ошибку ValidationMessageFor "Значение" 1 "неверно."
Итак, я меняю вид на...
<%= Html.DropDownListFor(m => m.ParentCategory.**CategoryId**,
new SelectList .../ snip ) %>
Теперь это работает, любопытно. Свойство ParentCategory в моей модели ViewModel задано с правильным "CategoryId", но "Name" имеет значение NULL. Мне лучше просто иметь значение null для свойства ParentCategory вместо строго типизированного объекта Category?