Я полностью теряюсь и путаюсь в том, как использовать новый строго типизированный помощник 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 error "Значение '1' недопустимо."
Так что я изменил вид на ...
<%= Html.DropDownListFor(m => m.ParentCategory.**CategoryId**,
new SelectList .../ snip ) %>
Теперь это работает, вроде. Свойство ParentCategory в моей ViewModel имеет правильный «CategoryId», но «Name» равно NULL. Мне лучше иметь просто обнуляемое int для свойства ParentCategory вместо строго типизированного объекта Category?