2016-04-19 5 views
0

У меня есть контроллер с действиемНе показывать выбранное значение в лямбда-выражение в представлении Page

public ActionResult ActionName(int ID) 
{ 
    ViewBag.StudentID = new SelectList(Student, "StudentID", "StudentName", ID); 
    return View() 
} 

В представлении

@Html.DropDownListFor(m => m.StudentID, ViewBag.StudentID as SelectList, "Select Student", new{ @class = ".."}) 

Это поле является обязательным полем, бритва не оказывающего с выбранное значение и требует поле работает
Но когда я использую

@Html.DropDownList("StudentID", null, "Select Student", new{ @class = ".."}) 

Бритва отображает выбранное значение, которое требует от вышеуказанного кода

+0

Нельзя использовать одно и то же имя для свойства модели и свойство «ViewBag». Измените его на (скажем) 'ViewBag.StudentList = new SelectList (Student,« StudentID »,« StudentName »)' (последний параметр не требуется, потому что его значение свойства модели определяет, что выбрано –

+0

Я хочу показать выбранное значение вдоль требуемой проверки – anand

+0

И использование кода в моем комментарии будет делать это (с помощью '@ Html.DropDownListFor (m => m.StudentID, ViewBag.StudentList как SelectList,« Select Student », ...)' и '@ Html.ValidationMessageFor (m => m.StudentID)' –

ответ

1

Вы не можете использовать одноименное имя для свойства модели и свойства ViewBag. Измените его на (скажем)

ViewBag.StudentList = new SelectList(Student, "StudentID", "StudentName") 

Обратите внимание, что четвёртая параметр в вашем примере не требуется, поскольку его стоимость модели свойства, которое определяет, что выбрано.

и с точки зрения использования

@Html.DropDownListFor(m => m.StudentID, ViewBag.SelectList as SelectList, "Select Student", new{ @class = ".."}) 

В случае первого метода (@Html.DropDownListFor()) параметр не выбран, потому что внутренне метод строит новый IEnumerable<SelectListItem> для того, чтобы установить Selected свойство перед созданием HTML , Создавая это, он ищет значение в для ключа с именем StudentID и находит тот, который равен System.Web.Mcv.SelectList, но нет параметров со значением "System.Web.Mcv.SelectList", поэтому ни один из вариантов не генерируется с помощью Selected = true.

В случае второго метода (@Html.DropDownList()) вы предоставляете null в качестве второго параметра, поэтому внутренне помощник использует свой ViewBag свойство генерировать варианты, но теперь вы не обязывающего к модели собственности, поэтому помощник не генерирует любые data-val-* атрибуты.

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