c# - MVC4 - 在 DropDownList 中设置初始选定的项目

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

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

@model MyModel.ObjectViewModel

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

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

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

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

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

我在这里和通过谷歌进行了搜索,并且有一些用于设置初始选定值的选项,但是他们使用像 @Html.DropDownList 这样的方法,这似乎不允许我指定一个控件名称,在我的 Controller 中我专门引用了控件的名称。

最佳答案

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

我在我的 Controller 中创建了一个方法,我传入我的项目列表(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 中的列表,它现在将默认选择正确的项目。

关于c# - MVC4 - 在 DropDownList 中设置初始选定的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18230345/

相关文章:

C# 自动实现的属性

javascript - asp.net-mvc ajax json post 到 Controller 操作方法

c# - 如何在 ASP.NET MVC Razor 中编码 '/'

c# - 如何使用 Ninject 注入(inject)静态属性?

c# - MVC Azure无法找到具有默认路由的 View 或主控,但可以在本地工作

asp.net-mvc - 在 Razor View 中打印单个逗号(或其他字符)

c# - 如果 ASP.NET MVC Web 应用程序要托管在 DMZ 中且无法直接访问数据库(tcp 端口 1433 被防火墙阻止),如何设计层级?

c# - 如何在win API的creatnamedpipe方法中为非管理员权限帐户添加安全属性

c# - 在 asp.net mvc 中执行 Powershell 和 Powercli 命令时如何设置超时

c# - 首先使用 ASP.net EF 5 代码创建表时是否可以为列设置默认值?