Отображать строку ASP.NET MVC для просмотра без HttpContext или ControllerContext?

Мне нужно отобразить представление ASP.NET MVC в строку, чтобы иметь возможность отправить его по электронной почте (это электронное письмо с подтверждением заказа, определенное в файле .ascx).

Мне удалось преобразовать представление ASP.NET MVC в строку с помощью один из методов в этом вопросе.

Однако теперь мне нужно иметь возможность делать это через службу WCF (доступ к которой будет осуществляться через silverlight), поэтому у меня нет ControllerContext. Эта служба WCF содержится в том же проекте, что и мой проект MVC, поэтому имеет доступ ко всем моим моделям и т. Д.

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

Ближайший, который я нашел, - это принятый ответ на вышеупомянутый вопрос, но, к сожалению, он не работает с RenderPartial в представлении, которое вы визуализируете.

Я надеюсь, что, возможно, некоторая закулисная работа над ASP.NET MVC 2, связанная с RenderAction, может помочь сделать это возможным сейчас?


person Simon_Weaver    schedule 03.01.2010    source источник


Ответы (2)


Способ интеграции механизма просмотра веб-форм в MVC требует контекста контроллера, поскольку он фактически переносит создание шаблонов / рендеринг в класс страницы ASP.NET, который записывает содержимое шаблона непосредственно в поток ответа.

Я предлагаю вам взглянуть на движок Spark View (который будет отображать шаблоны WFVE без изменений) и использовать его для создания шаблонных писем из службы WCF. Примеры этого можно найти в загрузке Spark.

person Neal    schedule 13.01.2010
comment
или это полезно только для запуска действия контроллера и извлечения модели? Раньше я пытался издеваться над контекстом и не очень далеко продвинулся. прямо сейчас у меня просто нет времени играть с чем-то другим - person Simon_Weaver; 14.01.2010
comment
Я бы не рекомендовал издеваться над контекстом, поскольку, если вы по существу не воссоздадите идеальный макет, вы рискуете внести ошибки. Серьезно, на интеграцию Spark у меня ушло меньше часа. - person Neal; 15.01.2010

Почему бы тогда не создать ControllerContext, даже если поддельный?

person Beep beep    schedule 03.01.2010