繁体   English   中英

asp.net mvc dropdownlistfor不显示selectedItem

[英]asp.net mvc dropdownlistfor not show selectedItem

模型:

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确实有一项具有selected = true的项目,但未能在View中将其显示为默认值。 我究竟做错了什么 ?

如何显示selectedItem作为默认值?

视图:

@model BookModel 
@Html.DropDownListFor(model => model.TranslatorId, Model.AvailableTranslators)

更新:我将数据类型TranslatorId更改为字符串

public string TranslatorId { get; set; }

现在dropdownlist显示正确的默认值,只是不知道为什么?

您需要将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时不起作用,请阅读此问题的所有答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM