2010-06-20 94 views
0

我有一個主網頁,其中使用視圖模型我已經建立:ASP.NET MVC IEnumerable的問題進行的RenderPartial

public class HomeViewModel 
{ 
    public List<Category> Categories { get; set; } 
    public List<Image> Images { get; set; } 

    public HomeViewModel(List<Image> images, List<Category> categories) 
    { 
     Images = images; 
     Categories = categories; 
    } 
} 

在我的主頁,我outputing類別,但然後通過傳遞圖像至PartialView。

<div id="gallery"> 
    <% Html.RenderPartial("gallery", Model.Images); %> 
</div> 

當我跑我的工作,我得到這個錯誤:錯誤CS0308:

:非通用型「System.Collections.IEnumerable」不能與類型參數

這是我的局部視圖中使用

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<Gallery.Models.Image>>" %> 
    <%@ Import Namespace="Gallery.Helpers" %> 

    <ul> 
     <% foreach (var item in Model) 
     { %> 
      <li>    
       <%= Html.ImageLink(item.imageID.ToString(), Url.Content("~/Uploads/" + item.imageLocation).ToString(), item.imageDescription, Url.Content("~/Uploads/" + item.imageThumb).ToString(), item.imageDescription, null)%> 
      </li> 
     <% } %> 
    </ul> 

我使用.NET 4,這工作得很好,但我知道他們已經改變了泛型,因爲它使3.5成爲可能。然而我的網絡服務器公司並沒有升級他們的服務器,這意味着我必須使用3.5進行部署如果我將Partial與Main頁面作爲相同的對象進行投影,但是我通過的ViewData超出了我需要的範圍,我已經獲得了Partial的工作。我使用Partials的原因是爲了利用.NET框架中的AJAX。例如。類別是AJAX鏈接轉到一個方法,該方法返回更新的部分與類別圖像,我應該只需要傳遞圖像到Parial。

任何幫助解決這個將不勝感激。

感謝,

喬恩

回答

4

我懷疑你是不是導入System.Collections.Generic命名空間爲您的ASPX/ASCX文件,這樣編譯器的東西,你正在使用的非通用IEnumerable的。

轉到您的web.config文件並確保所有必需的名稱空間都正在導入。

或者,在你的「繼承」屬性使用完整的類型名稱:

Inherits="System.Web.Mvc.ViewUserControl<System.Collections.Generic.IEnumerable<Gallery.Models.Image>>" 
+0

啊爲時已晚。 +1 – 2010-06-20 18:47:12

+0

感謝您的幫助。這已經解決了這個問題,我還是比較新的.NET主要使用Java之前:-) – 2010-06-20 18:56:53