MVC 4中的下拉列表绑定到模型(必须是比这更好的方法!)

时间:2013-06-30 19:00:33

标签: asp.net-mvc-4

我目前正在使用ViewBag从View中获取数据以更新我的模型。我正在使用一个下拉列表,我从中获取所选项目,并在我的控制器中使用选择更新我的“客户模型”。我知道这不是一个好方法...请告诉我如何使用下拉列表选项更新我的“客户模型”,而不使用formcollection参数。

控制器

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(Customer customer, FormCollection form)
    {
        if (ModelState.IsValid)
        {
            // Get selectected title from dropdownlist
            customer.Title = form["TitleDropDownList"];

            db.Customers.Add(customer);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(customer);
    }

查看

    <tr>
        <td>
            @Html.LabelFor(model => model.Title)
        </td>
        <td>
            @Html.DropDownList("TitleDropDownList")
            @Html.ValidationMessageFor(model => model.Title)
        </td>
    </tr>

我的获取方法是......

    public ActionResult Create()
    {

        // Create title dropdownlist list for new customers
        List<SelectListItem> titleDropDownList = new List<SelectListItem>();
        titleDropDownList.Add(new SelectListItem { Text = "Mr", Value = "Mr" });
        titleDropDownList.Add(new SelectListItem { Text = "Mrs", Value = "Mrs" });
        titleDropDownList.Add(new SelectListItem { Text = "Miss", Value = "Miss" });
        titleDropDownList.Add(new SelectListItem { Text = "Ms", Value = "Ms" });
        ViewBag.TitleDropDownList = titleDropDownList;

        return View();
    }

1 个答案:

答案 0 :(得分:0)

如果您将方法更改为静态并返回List

public static List<SelectListItem> Create(){
    //Build List
    return titleDropDownList;
}

您可以将视图上的下拉列表更改为

@Html.DropDownListFor(x => x.Title, PathToController.Create(), "Select One")

希望这有帮助。