2015-05-29 2 views
1

Я отправил viewdata на страницу просмотра, подобную этой.asp.net mvc viewdata display на странице просмотра

public ActionResult SelectRes(int id) 
    { 
     var ResList = resrepository.GetAll(); 
     ViewData["ResList"] = new SelectList(ResList, "ResId", "Res_KORNM"); 

     return View(svcresrelationRepository.GetAll()); 
    } 



@foreach (var item in ViewData["ResList"] as List<ITSDapper.Dapper.Resource>) 
     { 
      <tr> 
       <td style="text-align:center;"> 
        @Html.DisplayFor(a=> item.Res_KORNM) 
       </td> 
      </tr> 
     } 

И я попытался отобразить viewdata на странице просмотра, но это не сработало. (Ссылка на объект не установлена ​​в экземпляр объекта)

Как отображать viewdata в инструкции foreach?

ответ

0

Вы конвертируете ссылку на неправильный тип, вы создаете SelectList экземпляр то время как в Посмотрите, как вы конвертируете его в IList<T>, лет и должны преобразовать его в SelectList:

@foreach (var item in ViewData["ResList"] as SelectList) 
     { 
      <tr> 
       <td style="text-align:center;"> 
        @Html.DisplayFor(a=> item.Text) // note this as well 
       </td> 
      </tr> 
     } 
+0

Хорошо работает. большое спасибо! – Roy

1

Обычно вы должны использовать SelectList для данных, которые должны быть выбраны пользователем.

Если это намерение вы можете просто использовать Html.DropDownList:

@Html.DropDownList("SelectedId", 
         (IEnumerable<SelectListItem>)ViewData["ResList"]) 

Если вы просто нуждаясь для просмотра данных, я хотел бы изменить свой код на стороне сервера, чтобы использовать что-то другое, чем SelectList.

Это может быть сделано следующим образом:

Контроллер

public ActionResult SelectRes(int id) 
    { 
     var ResList = resrepository.GetAll(); 

     ViewData["ResList"] = ResList; 

     return View(svcresrelationRepository.GetAll()); 
    } 

Посмотреть

@foreach (var item in ViewData["ResList"] as List<ITSDapper.Dapper.Resource>) 
     { 
      <tr> 
       <td style="text-align:center;"> 
        @Html.DisplayFor(a=> item.Res_KORNM) 
       </td> 
      </tr> 
     } 
+0

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

+0

@EhsanSajjad Не имеет смысла генерировать SelectList для данных с серверной стороны, правда, верно? Просто сделать компиляцию кода не лучшим ответом. – hutchonoid

+1

@ hutchonoid: Ты прав. Я неправильно использовал выражение из выпадающего списка. Я должен был так писать; – Roy

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