Можно ли визуализировать вид вне контроллера? - PullRequest
4 голосов
/ 22 июня 2011

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

То, что я пытаюсь сделать, это сделать частичное представление из веб-службы WCF, чтобы отправить его куда-нибудь еще. Можно ли для этого использовать движок вида?

Спасибо!

Обновление:

Я получаю исключение аргумента null с помощью HtmlHelper. Вот мой код и трассировка стека. Моя часть действительно называется TableOfContent.cshtml и находится в папке / View / Shared. Я новичок, чтобы создать экземпляр моего ViewContext по-другому?

HtmlHelper helper = new HtmlHelper(new ViewContext(), viewData);
var a = helper.Partial("TableOfContent");

   at System.Web.Mvc.ViewContext..ctor(ControllerContext controllerContext, IView view, ViewDataDictionary viewData, TempDataDictionary tempData, TextWriter writer)
   at System.Web.Mvc.HtmlHelper.RenderPartialInternal(String partialViewName, ViewDataDictionary viewData, Object model, TextWriter writer, ViewEngineCollection viewEngineCollection)
   at System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName, Object model, ViewDataDictionary viewData)
   at System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName)
   at SyncInvokeProcessEvent(Object , Object[] , Object[] )
   at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
   at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)

Ответы [ 2 ]

0 голосов
/ 10 марта 2014

Вот две разные идеи для рассмотрения:

  1. Я сделал нечто подобное, используя RazorEngine .Позволяет отображать шаблоны бритвы в строку.
  2. Создайте контроллер и используйте WebClient для вызова действия.Это предполагает, что у вас есть приложение MVC.
0 голосов
/ 22 июня 2011

Это вызовет представление без использования контроллера (для частичного просмотра).

Html.Partial(partialViewName);

См. Также Html.Partial перегрузка метода

...