2015-05-29 96 views
1

我發送了一個viewdata到這樣的視圖頁面。asp.net mvc viewdata在視圖中顯示

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,但它不起作用。 (對象引用未設置爲對象實例)

如何在foreach語句中顯示viewdata?

回答

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