Asp.net mvc 4 如何在包含下拉列表项时将下拉列表与模型属性绑定?

Asp.net mvc 4 如何在包含下拉列表项时将下拉列表与模型属性绑定?,asp.net-mvc-4,Asp.net Mvc 4,我遇到了一个问题,我已检索到视图包中下拉列表的所有值,并希望在运行时显示它们。我已经通过为控制器使用以下代码实现了它 [HttpGet] public ActionResult Index() { var categoryList = new PersonalApp(); SelectList catList = new SelectList(categoryList.GetAffinity().ToList(), "ClientName"

我遇到了一个问题,我已检索到视图包中下拉列表的所有值,并希望在运行时显示它们。我已经通过为控制器使用以下代码实现了它

    [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不能用作上述代码的参数。我将如何解决这个问题,因为我可以在categorylist中拥有下拉列表的所有值,并且可以将其与模型属性affinityNum绑定


谢谢

您的模型应该有一个
IEnumerable
属性,该属性将保存以下值:

public class PersonalApp
{
    public string AffinityNum { get; set; }
    public IEnumerable<SelectListItem> CategoryList { get; set; }
}
最后,在强类型视图中,您将使用此属性将下拉列表绑定到:

@model PersonalApp
...
@Html.DropDownListFor(x => x.AffinityNum, Model.CategoryList, "BranchType")
请试一试; @Html.DropDownListFor(model=>model.AffinityNum,(SelectList)ViewBag.categoryList)

@model PersonalApp
...
@Html.DropDownListFor(x => x.AffinityNum, Model.CategoryList, "BranchType")