2010-04-26 54 views
0

控制器動作:不是強類型的視圖問題

public ActionResult Index() 
    { 
     probaEntities proba = new probaEntities(); 
     probaEntities proba1 = new probaEntities(); 
     probaEntities proba2 = new probaEntities(); 

     var query = from i in proba.name 
        from j in proba1.id_person 
        from k in proba2.last_name 
        select new 
        { 
         i.ime, 
         j.id, 
         k.prezime 
        }; 
     return View(query); 
    } 

查看網頁:

<table> 
     <tr> 

     <th> 
      ime 
     </th> 
     <th> 
      broj 
     </th> 
     <th> 
      prezime 
     </th> 
    </tr> 

<% foreach (var item in Model) { %> 

    <tr> 

     <td> 
      <%= Html.Encode(item.name) %> 
     </td> 
     <td> 
      <%= Html.Encode(item.id_person)%> 
     </td> 
     <td> 
      <%= Html.Encode(item.last_name)%> 
     </td> 
    </tr> 

<% } %> 

</table> 

如何才能在繼承=寫 「???」 ?這個視圖不是強類型的,因爲我有3個表格向他發佈數據。我是否必須爲這個觀點制定一個特殊的模型,是否有一個較短的解決方案?

回答

1

您可以使用

<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage" %> 
+0

在這種情況下,我有這個錯誤:foreach語句不能對'object'類型的變量進行操作,因爲'object'不包含'GetEnumerator'的公共定義 – Ognjen 2010-04-26 18:17:21

+0

如果你想枚舉,你可以創建自己的類代表您的數據模型並實現IEnumerable。然後你會使用'Inherits =「System.Web.Mvc.ViewPage 」',將它從控制器傳遞到視圖中。 – RedFilter 2010-04-26 18:20:43

+0

當我編寫<%@ Page Title =「」Language =「C#」Inherits =「System.Web.Mvc.ViewPage」%>時,我可以這樣做,而不需要我自己的班級代表數據模型 – Ognjen 2010-04-26 18:23:40

1

你不能傳遞一個匿名類型作爲泛型類型參數,除非你想實現System.Web.Mvc.ViewPage <動態> - 然後你的代碼以希望爲了最好。 (也需要你使用.NET 4!)

雖然創建一個強類型視圖模型可能會是你最好的選擇。

+0

最後我通過make數據模型。我使用.NET 3.5 – Ognjen 2010-04-27 07:09:56