从DAC层返回列表的方法,而不使用IEnumerable来绑定MVC @Html.Dro

本文关键字:SelectListItem IEnumerable 绑定 Dro @Html MVC 列表 返回 DAC 方法 | 更新日期: 2023-09-27 18:12:36

是否有任何方法可以从DAC层返回列表,而无需在DAC层使用System.Web.Mvc的IEnumerable来绑定MVC @Html.DropdownListFor()用于MVC

从DAC层返回列表的方法,而不使用IEnumerable<SelectListItem>来绑定MVC @Html.Dro

中的强类型视图

简单使用视图模型和填充控制器

模型
public class CreateUserViewModel 
{
    public int RoleId { get; set;} 
    public IEnumerable<SelectListItem> RolesSelectList { get; set; }
}
控制器

public ActionResult Create()
{
    CreateUserViewModel model = new CreateUserViewModel();
    model.RolesSelectList = DAC.GetRoles().Select(role => new SelectListItem() { Text = Role.Name, Value = Role.RoleId.ToString() });
    return View(model);
}
视图

@model CreateUserViewModel
@Html.DropDownListFor(model => model.RoleId, Model.RolesSelectList);

为什么不能直接将列表绑定到视图本身呢?如果你的模型包含一个名为Roles的IEnumerable类型的属性,那么在你的视图中你可以这样做:

@Html.DropDownListFor(m => m.RoleId, new SelectList(Model.Roles, "YourDataValueFieldName", "YourDataTextFieldName"))

换句话说,你可以通过模型传递任何满足IEnumerable接口的对象,并将其绑定到视图本身的SelectList上。