<div class="editor-field">
<% var categories = Model.Category.ToArray().Select(x => new SelectListItem
{
Value = x.CategoryId.ToString(),
Text = x.CategoryName
});
%>
<%= Html.DropDownListFor(model => model.Category_Category, categories) %>
<%= Html.ValidationMessageFor(model => model.Category) %>
</div>
При этом я думаю, что вы упускаете из виду весь смысл паттерна MVC. Вы никогда не должны делать что-то подобное. Представление не должно делать такие вещи. Вы не должны передавать свои доменные модели EF на ваш взгляд. Вы должны использовать модели представления, и ваш контроллер должен выполнить необходимые запросы и подготовить модель представления.
Итак, определите модель вида:
public class MyViewModel
{
public string SelectedCategoryId { get; set; }
public IEnumerable<SelectListItem> Categories { get; set; }
}
и затем ваш контроллер должен построить эту модель представления:
public ActionResult Foo()
{
var model = new MyViewModel();
model.Categories = db.Category.ToArray().Select(x => new SelectListItem
{
Value = x.CategoryId.ToString(),
Text = x.CategoryName
});
return View(model);
}
и тогда ваше представление будет строго набрано MyViewModel
, и вы сможете просто отобразить выпадающий список:
<div class="editor-field">
<%= Html.DropDownListFor(x => x.SelectedCategoryId, Model.Categories) %>
<%= Html.ValidationMessageFor(x => x.SelectedCategoryId) %>
</div>