我通过模型将对象列表传递到我的 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/