Повторное создание экземпляра объекта модели. Возможно через IoC?

У меня есть представление, которое использует RenderAction для рендеринга другого представления - раньше все работало нормально, но я провел достаточно небольшой рефакторинг и переместил некоторые свойства моей модели в абстрактный базовый класс (который моя модель наследует).

Html.RenderAction("MyAction","MyController", Model);

Если я поставлю здесь точку останова, я увижу, что мой объект модели полностью заполнен, однако, когда я сделаю шаг дальше, моя модель, похоже, будет повторно создана - со всеми не заданными свойствами, и поэтому я получаю много исключений с нулевой ссылкой.

RenderAction заставляет мой контейнер IoC (Castle Windsor) создавать новый экземпляр MyController. По какой-то причине он также создает экземпляр моего объекта Model?

Чтобы еще больше усложнить ситуацию, когда VS показывает мне мое исключение, он, по сути, говорит: «Свойство X равно нулю», но когда я смотрю на QuickWatch, свойство не равно нулю.

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

Я использую ASP.NET MVC 1.0.

Редактировать:

Также MyAction возвращает ActionResult - если это имеет значение.


person diarmo    schedule 15.12.2010    source источник
comment
@Mauricio - нет. Я настраиваю с помощью XML - он довольно стандартен и работает для многих других зависимостей (все интерфейсы, без абстрактов).   -  person diarmo    schedule 15.12.2010
comment
Это похоже на недоразумение RenderAction.   -  person Mauricio Scheffer    schedule 15.12.2010
comment
И нет, Windsor не будет создавать экземпляры вещей, которые вы не регистрировали.   -  person Mauricio Scheffer    schedule 15.12.2010


Ответы (1)


Параметр объекта RenderAction предназначен для значений маршрута, а не для модели. Вам нужно будет создать модель самостоятельно в методе MyAction.

person Nicholas Blumhardt    schedule 15.12.2010
comment
благодаря. Я знал, что это что-то глупое. Довольно забавно, передать модель, которая раньше работала - я лучше просмотрю остальную часть кода - убедитесь, что это не везде! - person diarmo; 16.12.2010