Ошибка со строго типизированным частичным представлением, когда модель является свойством родительской модели и имеет значение null - PullRequest
5 голосов
/ 17 февраля 2010

Я получаю следующее исключение при звонке на Html.RenderPartial:

Элемент модели, передаваемый в словарь, имеет тип 'ChildClass', но для этого словаря требуется элемент модели типа 'ParentClass'.

Эти два класса связаны между собой:

public class ChildClass { /* properties */ }

public class ParentClass
{
    public ChildClass ChildProperty { get; set; }

    /* other properties */
}

У меня есть экземпляр ParentClass, где значение ChildProperty равно null.

У меня есть два частичных вида: ParentView (ViewUserControl<ParentClass>) и ChildView (ViewUserControl<ChildClass>).

На первый взгляд, у меня есть следующее ...

<% Html.RenderPartial("~/Views/Controls/ChildView.ascx", Model.ChildProperty); %>

Эта строка вызывает исключение, указанное в верхней части этого сообщения.

Я подтвердил правильность работы, если ChildProperty не равно нулю. Почему MVC считает, что нулевое значение этого свойства имеет родительский тип?

Я могу обойти эту проблему, добавив код, который отображает ChildView, только если ChildProperty не равно нулю, но эта половина лишает смысла иметь представление.

1 Ответ

5 голосов
/ 17 февраля 2010

Посмотрите ответ здесь: renderpartial с нулевой моделью получает неправильный тип

Если это работает, ваше исправление должно выглядеть так:

<% Html.RenderPartial("~/Views/Controls/ChildView.ascx", Model.ChildProperty, 
      new ViewDataDictionary()); %> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...