У меня есть следующее объявление класса:
public class EntityTag : BaseEntity, ITaggable
У меня есть вспомогательный метод Html:
public static string TagCloud(this HtmlHelper html, IQueryable<ITaggable> taggables,
int numberOfStyleVariations, string divId)
Это мой ASP.NET MVC ascx:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IQueryable<EDN.MVC.Models.EntityTag>>" %>
<%@Import Namespace="EDN.MVC.Helpers" %>
<%= Html.TagCloud(Model, 6, "entity-tags") %>
Когда я передаю коллекцию IQueryable в ascx, я получаю эту ошибку:
Сообщение об ошибке компилятора: CS1928: «System.Web.Mvc.HtmlHelper>» не содержит определения для «TagCloud» и лучшая перегрузка метода расширения «EDN.MVC.Helpers.EdnHelpers.TagCloud (System.Web.Mvc .HtmlHelper, System.Linq.IQueryable, int, string) 'имеет недопустимые аргументы
Если я попытаюсь явно преобразовать коллекцию объектов следующим образом:
public static string TagCloud(this HtmlHelper html, IQueryable<Object> taggables, int numberOfStyleVariations, string divId)
{
var tags = new List<ITaggable>();
foreach (var obj in taggables)
{
tags.Add(obj as ITaggable);
}
return TagCloud(html, tags.AsQueryable(), numberOfStyleVariations, divId);
}
Я получаю ту же ошибку - передаваемые значения не нравятся компилятору.
Разве мой класс EntityTag не должен автоматически поддерживаться как IQueryable? Что мне не хватает? Это должно быть что-то очевидное. (Надеюсь.)