2010-06-20 4 views
0

У меня есть главная страница, которая использует ViewModel я создал: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, и это работало нормально, но я понимаю, что они изменили Generics с 3.5, что позволило. Однако моя веб-серверная компания не обновила свои серверы, поэтому мне нужно развернуть с использованием 3.5. У меня есть Partial для работы, если я передам Partial как тот же объект, что и главная страница, но затем я просматриваю больше ViewData, чем мне нужно. Причина, по которой я использую Partials, - использовать AJAX в платформе .NET. Например. Категории - это ссылки AJAX. Метод goto возвращает метод, который возвращает обновленный Partial с изображениями категорий, мне нужно только передать изображения в Parial.

Любая помощь в решении этого вопроса будет оценена по достоинству.

Спасибо,

Jon

ответ

4

Я подозреваю, что вы не импортировать System.Collections.Generic имен для ASPX/ASCX файлов так что компилятор вещей вы используете не-родовое IEnumerable.

Перейдите в файл web.config и убедитесь, что все необходимые импространства импортируются.

В качестве альтернативы, использовать полное имя типа в вашем «наследуется» атрибута:

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

Ах слишком поздно. +1 –

+0

Спасибо за помощь. Это решило проблему, я до сих пор довольно новичок в .NET, в основном использующей Java до :-) –

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