我遇到了问题,我已经检索了视图包中的下拉列表的所有值,并希望在运行时显示它们。我通过使用控制器的以下代码来实现它
[HttpGet]
public ActionResult Index()
{
var categoryList = new PersonalApp();
SelectList catList = new SelectList(categoryList.GetAffinity().ToList(), "ClientName", "AffinityNum");
ViewBag.categoryList = catList;
return View();
}
以及视图的以下代码
@using (Html.BeginForm("index", "Home"))
{
@Html.DropDownList("categoryList", "Branch Type")
}
它确实有效,但现在我想将它与模型绑定。我已经使用了以下代码:
@Html.DropDownListFor(model=>model.AffinityNum, "categoryList", "BranchType")
但它给了我一个错误,因为CategoryList不能用作上述代码的参数。我将如何解决这个问题,因为我可以在类别列表中获得下拉列表的所有值,并且我也可以将它与模型属性affinityNum绑定在一起。
谢谢
答案 0 :(得分:2)
您的模型应具有IEnumerable<SelectListItem>
属性,该属性将包含值:
public class PersonalApp
{
public string AffinityNum { get; set; }
public IEnumerable<SelectListItem> CategoryList { get; set; }
}
您将在控制器操作中填充并传递给视图:
[HttpGet]
public ActionResult Index()
{
var model = new PersonalApp();
var categories = categoryList.GetAffinity().ToList();
SelectList catList = new SelectList(categories, "ClientName", "AffinityNum");
model.CategoryList = catList;
return View(model);
}
最后在强类型视图中,您将使用此属性将下拉列表绑定到:
@model PersonalApp
...
@Html.DropDownListFor(x => x.AffinityNum, Model.CategoryList, "BranchType")
答案 1 :(得分:0)
请尝试; @ Html.DropDownListFor(model =&gt; model.AffinityNum,(SelectList)ViewBag.categoryList)