Во-первых, шаблоны отображения предназначены только для отображения.Если вам нужно редактировать с раскрывающимся списком, используйте шаблон редактора:
<%: Html.EditorFor(x => x.TestModel1, "TestModel1Template") %>
и в шаблоне редактора:
<%: Html.DropDownListFor(x => x.Property1, Model.MyDDLList) %>
, где MyDDLList определен как:
public IEnumerable<SelectListItem> MyDDLList { get; set; }
и в действии вашего контроллера вы заполняете значения:
public ActionResult Foo()
{
var model = new SuperViewModel
{
TestModel1 = new TestModel1
{
// Set some selected value
Property1 = "1",
// Fill the drop down values
// TODO: use a repository
MyDDLList = new SelectList(new[]
{
new SelectListItem { Value = "1", Text = "text 1" },
new SelectListItem { Value = "2", Text = "text 2" },
new SelectListItem { Value = "3", Text = "text 3" },
}, "Value", "Text")
}
}
return View(model);
}
ОБНОВЛЕНИЕ:
Вот полный рабочий пример:
Модель:
public class MyViewModel
{
public string SelectedItemId { get; set; }
public IEnumerable<SelectListItem> Items { get; set; }
}
Контроллер:
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new MyViewModel
{
// Preselect the second item
SelectedItemId = "2",
Items = new SelectList(new[]
{
new SelectListItem { Value = "1", Text = "item 1" },
new SelectListItem { Value = "2", Text = "item 2" },
new SelectListItem { Value = "3", Text = "item 3" },
}, "Value", "Text")
};
return View(model);
}
}
Просмотр (~/Views/Index.aspx
):
<%: Html.DisplayForModel() %>
DisplayTemplate (~/Views/DisplayTemplates/MyViewModel
):
<%: Html.DropDownListFor(x => x.SelectedItemId, Model.Items) %>