tzo*_*zik 2 c# asp.net asp.net-mvc attributes asp.net-mvc-uihint
我想知道如何使用UIHint属性生成DropDownList.我已经定制了一些预定义的属性,但我不知道如何继续生成DropDownLists.
这是我对我的最后一个做的,我想以类似的方式使用它:
public class CartProduct
{
[Required]
[UIHint("Spinner")]
public int? Quantity { get; set; }
[Required]
[UIHint("MultilineText")]
public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是一个使用泛型的(未经测试的)一般示例.可能有一种更简单的方法来实现同样的目标.
模型:
public class CartProduct
{
[UIHint("_DropDownList")]
public DropDownListModel<ItemType> MyItems { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
DropDownListModel类:
public class DropDownListModel<T>
{
public T SelectedItem { get; set; }
public IEnumerable<T> Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
控制器:
public ActionResult AnAction()
{
var model = new CartProduct();
model.MyItems = new DropDownListModel<ItemType>
{
Items = _yourListOfItems,
SelectedItem = _yourSelectedItem
};
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
_DropDownList.cshtml编辑器模板:
@model DropDownListModel<object>
@Html.DropDownListFor(m => m.SelectedItem,
new SelectList(Model.Items, Model.SelectedItem))
Run Code Online (Sandbox Code Playgroud)
最后,您的观点是:
@model CartProduct
@Html.EditorFor(m => m.MyItems)
Run Code Online (Sandbox Code Playgroud)
这为您提供了一个DropDownListModel可以在任何地方使用的通用类型.使用 EditorFor和UIHint指定编辑器模板并在整个地方重用视图.