2010-06-20 40 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