【问题标题】:MVC4 - Setting Initially Selected Item in DropDownListMVC4 - 在 DropDownList 中设置最初选择的项目
【发布时间】:2013-08-16 07:46:07
【问题描述】:

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

@model MyModel.ObjectViewModel

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

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

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

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

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

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

【问题讨论】:

  • 这种工作方式是说它应该将默认值设置为 X,但是当我实际运行应用程序并转到页面时,它似乎并没有改变它。 (第二个链接)。
  • 为什么不使用 ViewbagViewData 来携带您选择的 id(value) 来查看并将该值分配给下拉选择的值重载,所以您选择的 id(value) 可能是动态的。
  • 因为我没有ID,所以我只有文本值。我正在处理从 SQL 获得的数据,而不是存储 ID 并使用 Joins 来规范化表,它只是传递对象的字符串名称。
  • 尝试将您的 TextField 和 Valuefield 都作为名称传递 像这样 SelectListItem {Text = "X", Value= "X"}

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


【解决方案1】:

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

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

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 中的列表,它现在将默认选择正确的项目。

【讨论】:

    猜你喜欢
    • 2019-08-21
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多