2010-11-27 3 views
3

У меня есть ошибка, которую я как бы понимаю, но не могу решить, как правильно решить.Элемент модели, переданный в словарь, имеет тип

У меня есть MasterPage, от этого MasterPage я называю:

<% Html.RenderPartial("Tags"); %> 

Теги является строго типизированным мнение, что выглядит следующим образом:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<JegManglerEn.Controllers.CategoryCount>>" %> 

я возвращаю PartialView так:

return View("Tags", result); 

, где приведен правильный результат:

List<CategoryCount> 

Ошибка заключается в следующем:

Модель элемент передается в словарь типа 'System.Collections.Generic.List 1[JegManglerEn.Item]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [JegManglerEn.Controllers.CategoryCount].

Так установка такова:

MasterPage загружает вид, который принимает коллекцию JegManglerEn.Item И также пытается загрузить PartialView, который принимает коллекцию в JegManglerEn.Controllers.CategoryCount ... но не в состоянии Сделай так.

Я знаю, что это как-то связано с методом RenderPartial, потому что, если я изменю его на RenderAction, он отлично работает.

Если у вас есть ответ, я получаю возможность пропустить просмотр MVC soruce или startup Reflector.

Спасибо!

ответ

5

При вызове перегрузки одного параметра Html.RenderPartial, вы неявно передавая всю модель родительского вида вплоть до частичного , Это не работает, так как типы моделей, ожидаемые представлениями, не совпадают.

Самый простой способ заставить RenderPartial работать в вашем контексте - создать составной тип модели, содержащий как теги, так и данные модели страницы, а затем вызвать перегрузку, когда вы передаете часть родительской модели частичной:

Html.RenderPartial("Tags", Model.Tags); 

это сказанное, я думаю RenderAction, скорее всего, путь здесь, как это делает его легче избежать дублирования кода в контроллерах (конечно при условии, вы загружаете данные теги таким же образом, для все страницы, наследуемые от рассматриваемой главной страницы).

0

Изменение

ViewUserControl<IEnumerable<JegManglerEn.Controllers.CategoryCount>> 

в

ViewUserControl<List<JegManglerEn.Controllers.CategoryCount>> 
Смежные вопросы