строго типизированные представления управления пользователями не разрешены asp.net mvc? - PullRequest
1 голос
/ 10 апреля 2009

Вот настройки - у меня есть представление, которое перечисляет продукты. На этой же странице у меня есть пользовательский элемент управления, в котором перечислены категории.

Я передаю список продуктов для просмотра следующим образом:

return View(myProducts);

Представление пользовательского элемента управления получает необходимые данные через ViewData ["Category"]

Теперь, если я попытаюсь использовать строго типизированное представление управления пользователем, как это:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<myData.Models.Category>>" %>

Я получаю эту ошибку:

Элемент модели, передаваемый в словарь, имеет тип 'System.Collections.Generic.List 1[myData.Models.Product]' but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [myData.Models.Category]'.

Представление управления пользователем, похоже, сбито с толку, так как я передаю в него список "Продукт". Поэтому, если я уберу строгую типизацию следующим образом:

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

Все отлично работает.

Значит, строго типизированные представления управления пользователями просто не разрешены? Или я просто что-то не так делаю?

Ответы [ 2 ]

0 голосов
/ 10 апреля 2009

Когда вы визуализируете частичное представление, используйте ViewData ["Category"] в качестве модели, которую вы передаете элементу управления.

<% Html.RenderPartial( "MyUserControl", ViewData["Category"], ViewData ); %>
0 голосов
/ 10 апреля 2009

Общий список типа A не может быть назначен универсальному списку типа B (где B получен из A). Это общее правило для всех общих коллекций в .Net.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...