这是一个使用泛型的(未经测试的)通用示例。可能有一种更简单的方法可以实现相同的目标。
模型:
public class CartProduct
{
[UIHint("_DropDownList")]
public DropDownListModel<ItemType> MyItems { get; set; }
}
DropDownListModel 类:
public class DropDownListModel<T>
{
public T SelectedItem { get; set; }
public IEnumerable<T> Items { get; set; }
}
控制器:
public ActionResult AnAction()
{
var model = new CartProduct();
model.MyItems = new DropDownListModel<ItemType>
{
Items = _yourListOfItems,
SelectedItem = _yourSelectedItem
};
return View(model);
}
_DropDownList.cshtml 编辑器模板:
@model DropDownListModel<object>
@Html.DropDownListFor(m => m.SelectedItem,
new SelectList(Model.Items, Model.SelectedItem))
最后,您的观点:
@model CartProduct
@Html.EditorFor(m => m.MyItems)
这为您提供了一个DropDownListModel
可以在任何地方以任何类型使用的泛型。使用 EditorFor
andUIHint
指定编辑器模板并在所有地方重用视图。