MVC4 - 在DropDownList中设置最初选择的项目

时间:2013-08-14 11:20:19

标签: c# asp.net-mvc razor drop-down-menu

我通过模型将对象列表传递给我的View

@model MyModel.ObjectViewModel

我是MVC新手,我正在尝试在我的视图中设置dropdownlist的最初选定项目(在编辑之后建模)。

然后我将其绑定到下拉列表,如下所示

<label for="ddlObjects">Select Object</label>
@Html.DropDownList("ddlObjects", Model.AllObjectsSelectList, Model.Object.ObjectName)

以上确实使下拉列表最初选择了正确的对象,但我发现它只是以文本的形式。不选择真实对象,因此不使用该值。我如何拥有项目列表,例如"Object1" "Object2"等,并且默认值是特定项目?

当我通过该项目时,我只知道该项目的文本值(显示在下拉列表中的名称),我不知道它的内在值,所以我不能真正使用{{1 }}

我在这里搜索并通过谷歌,并且有一些选项可用于设置最终选择的值,但是他们使用SelectListItem {Text = "X", Value= "Y"}这样的方法似乎不允许我指定控件名称,并且在我的controller我特意引用了控件的名称。

1 个答案:

答案 0 :(得分:2)

我的工作并不漂亮,但它可以很容易地重构得更好。这只是一些努力的情况,目前我没有时间 - 但我将在下周左右。

我在我的控制器中创建了一个方法,我在项目列表中传递了一个方法(selectList,你认为它无论如何都会工作......但它没有)然后我找出哪个是我需要的对象并设置了选定的属性为true。

private List<SelectListItem> GetListOfObjectTypes(SelectList selectList, string objectTypeName, string objectTypeId)
{
    List<SelectListItem> items = new List<SelectListItem>();
    foreach (METAObjectType item in selectList.Items)
    {
         bool isSelected = false;
         if (item.Name == objectTypeName)
         {
                isSelected = true;
         }
         items.Add(new SelectListItem {Selected= isSelected, Text=item.Name, Value=item.ObjectTypeId.ToString()});
        }
        return items;
    }

然后我将其传递给我的View并将其设置为@ Html.DropDownList中的列表,现在它将默认选择正确的项目。