Вы можете сделать две вещи:
а) Быстрый взлом
public ActionResult Create() {
ViewData["myList"] = new SelectList( listOfCategories, "Name","CategoryId");
return View()
}
Create.aspx
...
<%= Html.DropDown("categoryId", ViewData["myList"] as SelectList,"-");
...
б) Создать ViewDataModel.
public class CreateProductViewData
{
public Product product { get; private set; };
public SelectList Categories { get; private set; }
public CreateProductViewData(Product p) {
product = p;
Categories = new SelectList( listOfCategories, "Name","CategoryId");
}
}
public ActionResult Create()
{
Product p = new Product() { name="New Product..." } ;
return View(new CreateProductViewData(p));
}
in Create.aspx
...Inherits="System.Web.Mvc.ViewPage<CreateProductViewData>" %>
..
..
<%= Html.DropDown("CategoryId", Model.Categories, "-");
Я в основном использую подход B, потому что он перемещает много кода из контроллера в код «Что необходимо для отображения этой страницы», не загромождая код «КАК отображать данные». *
Так что в действительности у меня есть
- Код, который действует (контроллер)
- Код, который подготавливает представление путем загрузки вторичных данных (объект ViewData)
- Код, который отображает представление (.aspx)
Обычно я могу использовать ViewDataModel для редактирования и создания.