我通过模型将对象列表传递给我的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我特意引用了控件的名称。
答案 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中的列表,现在它将默认选择正确的项目。