ASP.NET MVC使用UIHint属性生成DropDownList

时间:2014-03-13 17:43:50

标签: 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; }

}

1 个答案:

答案 0 :(得分:8)

这是一个使用泛型的(未经测试的)一般示例。可能有一种更简单的方法来实现同样的目标。

型号:

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,您可以在任何地方使用任何类型。使用EditorForUIHint指定编辑器模板,并在整个地方重复使用该视图。