我有一个问题,下拉列表中的项目没有被选中。我正在构建一个 SelectListItems 数组并将正确的设置为 selected = true 但它没有被选中。
我的控制器中有以下代码:
public ActionResult Edit(int id)
{
var p = _myRepository.FindBy(id);
var vm = new MyViewModel(p) { CategoryTypes = ControllerUtils.GetList(_myTypeRepository, r => r.Name, p.CategoryType.Id) };
return View(vm);
}
这是 ControllerUtils 类中的 GetList 函数:
public static class ControllerUtils
{
public static IEnumerable<SelectListItem> GetList<T>(IIntKeyedRepository<T> list, Func<T, string> getName, int id) where T : BaseModel
{
var items = list.All().ToList();
var itemsList = items.Select(r => new SelectListItem() { Selected = r.Id == id, Text = getName(r), Value = r.Id.ToString() });
return itemsList;
}
}
这是我的视图代码:
<div class="editor-label">
@Html.LabelFor(model => model.MyObject.CategoryType)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.MyObject.CategoryType, Model.CategoryTypes)
@Html.ValidationMessageFor(model => model.MyObject.CategoryType)
</div>
当我在控制器代码中调试并列出 SelectListItem 对象数组时,我确实看到第二项已选中 = true。但是当我检查视图 HTML 时,我没有看到任何一个项目被选中:
<select id="CategoryType" name="CategoryType">
<option value="1">Choice 1</option>
<option value="2">Choice 2</option>
</select>
如您所见,这两个项目都没有“selected="selected"。关于这里可能发生的事情有什么建议吗?