asp.net mvc dropdownlistfor不显示selectedItem

时间:2013-11-12 08:23:01

标签: asp.net asp.net-mvc

型号:

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显示正确的默认值,只是不知道为什么?

1 个答案:

答案 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的所有答案