2016-09-27 8 views
0

Если у меня есть метод, как это:Get SelectedValue из списка <SelectListItem> DDL

public static List<SelectListItem> lstPassFail() 
{ 
    List<SelectListItem> lstPossiblePassFail = new List<SelectListItem>() 
    { 
     new SelectListItem() { Text = "Pass", Value = "Pass" }, 
     new SelectListItem() { Text = "Fail", Value = "Fail" }, 
    }; 

    return lstPossiblePassFail; 
} 

Тогда в моем Edit действий я это сделать:

ViewBag.PassFail = ClassName.lstPassFail(); 

Тогда в моем Edit View Я делаю это:

@Html.DropDownList("PassFail", (List<SelectListItem>)ViewBag.PassFail, "-- Please Select a Result --", htmlAttributes: new { @class = "form-control" }) 

С эта запись уже существует в базе данных, и это поле уже имеет значение, как я могу отобразить это выбранное значение, а не DDL, выбрав по умолчанию первый параметр?

Я знаю, что вы можете сделать это с помощью перегруженного метода для SelectList, но можно ли это сделать так, как я изобразил выше?

Любая помощь приветствуется.

+0

Используйте модель с именем 'PassFail' вместо' ViewBag'? – GSerg

+1

любая причина, по которой вы не используете '@ Html.DropDownListFor'? – JamieD77

+0

@ JamieD77 Я понял это. Я отправил свой ответ –

ответ

1

Я понял это.

Я изменил:

ViewBag.PassFail = ClassName.lstPassFail(); 

в

ViewBag.PassFail = new SelectList(ClassName.lstPassFail(), "Value", "Text", chosenWTest.PassFail); 

Тогда на мой взгляд, я изменил DropDownList к этому

@Html.DropDownList("PassFail", null, "-- Please Select a Result --", htmlAttributes: new { @class = "form-control" }) 

Это спасло значение для этого поля в этой записи.

+0

Ужасное решение (без сильной привязки, без проверки и т. д.). Привяжите к своей модели. См. Также [Будет ли возникнут какие-либо конфликты, если я укажу имя viewBag равным имени свойства модели] (http://stackoverflow.com/questions/37161202/will-there-be-any-conflict-if-i- указать, в-viewbag-имя-быть-равно-к-режиму/37162557 # 37162557) –