Html.DropDownList SelectedValue

时间:2014-12-19 05:33:08

标签: asp.net-mvc model-view-controller drop-down-menu

如何设置下拉列表的选定值?当下拉列表被绑定时,所选值/项应该是数据库中保存的最新数据。 这是我到目前为止所得到的:

控制器:

int userid = int.Parse(UserID);
if (!string.IsNullOrEmpty(UserID))
{
    IEnumerable<SelectListItem> address = db.Address
    .Where(c => c.UserID == userid)
    .OrderByDescending(c => c.ID)
    .Select(c => new SelectListItem
    {
        //make drop down list multi line 
        // display complete address
        Value = c.ID.ToString(),
        Text = c.StreetName + ", " + c.City
    });

    ViewBag.AddressID = address;
}

return View();

控制器:

@Html.DropDownList("AddressID", null, "Select Address", new { @class = "dropdown-toggle col-md-9 form-control" })

2 个答案:

答案 0 :(得分:3)

试试这个

在其中我提到的Model.values你传递的清单。 并且Value定义了下拉列表中每个选项的值。 并且Text定义了您可以在下拉列表中看到的Text值 并且我设置为4 id的值表示数据库中所选文本的值。

注意:new SelectList(Model.values, "Value", "Text", "4")其中我定义的4是您所选地址的值。请传递区域中所选文本的值。

请尝试以下代码。

@Html.DropDownList("AddressID", new SelectList(Model.values, "Value", "Text", "4"), "Select Address", new { @class = "dropdown-toggle col-md-9 form-control" })

答案 1 :(得分:1)

执行以下操作

  int userid = int.Parse(UserID);
    if (!string.IsNullOrEmpty(UserID))
    {
        IEnumerable<SelectListItem> address = db.Address
        .Where(c => c.UserID == userid)
        .OrderByDescending(c => c.ID)
        .Select(c => new SelectListItem
        {
            //make drop down list multi line 
            // display complete address
            Value = c.ID.ToString(),
            Text = c.StreetName + ", " + c.City
        });

        ViewData["DropDownSource"] = address.ToList();
    }

    return View();

在视图中

 @Html.DropDownListFor(model => model.AddressID, new SelectList((System.Collections.IEnumerable)ViewData["DropDownSource"], "Value", "Text", Model.AddressID), "Select Address", new { @class = "dropdown-toggle col-md-9 form-control" })