型号:
public partial class BookModel : BaseNopEntityModel,
ILocalizedModel<BookLocalizedModel>
{
public int TranslatorId { get; set; }
public IList<SelectListItem> AvailableTranslators { get; set; }
}
控制器:
public ActionResult Edit(int id)
{
var bookTranslators = _customerService.GetAllTranslators();
foreach (var item in bookTranslators)
{
model.AvailableTranslators.Add(new SelectListItem()
{
Text = item.Nickname,
Value = item.Id.ToString(),
Selected = item.Nickname == model.Translator
});
}
return View(model);
}
Model.AvailableTranslators确实有一个选项= true但未能在视图中将其显示为默认值的项目。我做错了什么?
如何将selectedItem显示为默认值?
查看:
@model BookModel
@Html.DropDownListFor(model => model.TranslatorId, Model.AvailableTranslators)
更新:我将数据类型TranslatorId更改为字符串
public string TranslatorId { get; set; }
现在dropdownlist显示正确的默认值,只是不知道为什么?
答案 0 :(得分:2)
您需要将AvailableTranslators集合包装成SelectList
试试这个:
@Html.DropDownListFor(s => s.TranslatorId,
new SelectList(ViewBag.AvailableTranslatators,
"Value","Text",@Model.TranslatorId
),
new {})
基本上,SelectList接受以下内容:
new SelectList(SelectListItemCollection, ValueFieldName, DataFieldName,
SelectedValue);
你可能想要重新审视我给出的SelectedValue字段。看看它应该是什么,但你有这个想法吗?
并且,为什么它在绑定到简单的SelectListItem List时不起作用,请阅读this question的所有答案