2

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

@model MyModel.ObjectViewModel

我是 MVC 的新手,正在尝试dropdownlist在我的视图中设置 a 的初始选定项(以 Edit 为模型)。

然后我将它绑定到一个下拉列表,如下所示

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

以上确实使下拉列表最初选择了正确的对象,但我发现它只是文本形式。未选择真实对象,因此未使用该值。我怎样才能有一个项目列表,比如说,"Object1" "Object2"等等,并让默认值是一个特定的?

当我通过项目时,我只知道项目的文本值(出现在下拉列表中的名称),我不知道它的内部值,所以我不能真正使用SelectListItem {Text = "X", Value= "Y"}

我已经在这里和通过谷歌搜索,并且有设置初始选择值的选项,但是他们使用的方法@Html.DropDownList似乎不允许我指定控件名称,并且在我的控制器中我特别引用了名称控制。

4

1 回答 1

2

我的工作不是很漂亮,但它可以很容易地重构为更好。这只是我目前没有时间做的一些努力的例子——但我会在下周左右。

我在我的控制器中创建了一个方法,我将它传入我的项目列表(selectList,您认为它无论如何都可以工作......但它没有)然后我确定哪个是我需要的对象并将 Selected 属性设置为真的。

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;
    }

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

于 2013-08-15T10:03:05.007 回答