2013-11-12 5 views
1

Модель:asp.net MVC dropdownlistfor не показывать 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 действительно есть один элемент с выбранным = верно, но не смог показать его в качестве значения по умолчанию в вид. Что я делаю не так ?

Как я могу отобразить selectedItem как значение по умолчанию?

Вид:

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

UPDATE: я изменил тип данных TranslatorId нанизывать

public string TranslatorId { get; set; } 

Теперь DropDownList показывает правильное значение по умолчанию, просто не знаю, почему?

+0

Просто, чтобы подтвердить: это AvailableTranslatators SelectList? – user1987392

+0

public IList AvailableTranslatators {get; задавать; } >> это так. –

+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); 

и вы можете взять relook в поле SelectedValue, которое я дал. Посмотрите, так ли это, но вы поняли, что это правда?

и за, почему это не работает, когда он связан с простым списком SelectListItem, прочитать все ответы this question

+0

, который будет работать, но тогда почему не может с selectlistitem. btw, если я изменяю translationId на строку типа данных, он отлично работает !! –

+0

см. Ответы [на этот вопрос] (http://stackoverflow.com/questions/6689505/asp-net-mvc-dropdownlistfor-does-not-honour-selectlistitem-selected) –

Смежные вопросы