【问题标题】:how to set the selected value in dropdownlist mvc如何在下拉列表 mvc 中设置选定的值
【发布时间】:2015-11-24 08:39:33
【问题描述】:

我在View 中有一个下拉列表

@Html.DropDownList("GenderAllowed", (SelectList)ViewBag.LocGenederAllowedList, new { @class = "form-control" })

我通过ViewBag 发送下拉列表,并通过模型发送需要在下拉列表中选择的值。

但是下拉列表中的值没有被选中。

我的控制器

[HttpGet]
    public ActionResult EditVendorLocation(int VendorLocationID)
    {
        VendorLocationHandler obj = new VendorLocationHandler();
        LocationGrid objLoc = new LocationGrid();
        FillGenederAllowed(objLoc);
        objLoc = obj.GetVendorLocationForAdmin(VendorLocationID);

        return View(objLoc);
    }

Viewbag 的功能

public void FillGenederAllowed(LocationGrid V)
{
    Dictionary<int, string> LocGenederAllowed = EnumHelper.GetGenderStates();
    SelectList LocGenederAllowedList = new SelectList(LocGenederAllowed, "key", "value");
    ViewBag.LocGenederAllowedList = LocGenederAllowedList;
}

【问题讨论】:

标签: c# asp.net-mvc model-view-controller html-select


【解决方案1】:

您传递给 DropDownList 的 SelectListItems 有一个属性 Selected。在您的 ViewModel 中,将最初应选择的项目设置为 true。

【讨论】:

    【解决方案2】:

    你的控制器需要这个

       ViewBag.LocGenederAllowedList = 
           new SelectList(db.SomeValues, "Value", "Text",selectedValue);
    

    在你看来

                @Html.DropDownList("GenderAllowed", 
             (SelectList)ViewBag.LocGenederAllowedList, new { @class = "form-control" })
    

    【讨论】:

    • 这不起作用SelectList LocGenederAllowedList = new SelectList(LocGenederAllowed, "key", "value", GenderAllow);
    【解决方案3】:

    看看this 类。 您需要做的就是创建它们的实例并将Selected 属性设置为 true,以便您最初选择的项目:

    public ActionResult YourActionMethod(...)
    {
        var selectItems = Repository.SomeDomainModelObjectCollection
          .Select(x => new SelectListItem {
            Text = x.SomeProperty,
            Value = x.SomeOtherProperty,
            Selected = ShoudBeSelected(x)
        });
        ViewBag.SelectListItems = selectItems;
        // more code
        var model = ...; // create your model
        return View(model);
    }
    

    您将需要Html.DropDownListFor(...) 的重载才能使用this

    【讨论】:

      【解决方案4】:

      您可以在控制器操作中执行此操作,如下所示。希望对您有所帮助。

      ViewBag.LocGenederAllowedList = new SelectList(items, "Id", "Name", selectedValue);
      

      点网小提琴链接:https://dotnetfiddle.net/PFlqei

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多