是否可以在控制器外部渲染视图?

Gab*_*yer 5 wcf-binding asp.net-mvc-3

我想知道是否可以从不是控制器的类中渲染视图。我所看到的一切似乎都在告诉你:你不能。

我想做的是从 WCF Web 服务呈现部分视图,以便将其推送到其他地方。是否可以使用视图引擎来实现这一点?

谢谢!

更新:

我不断收到 HtmlHelper 的参数 null 异常。这是我的代码和堆栈跟踪。我的部分确实名为 TableOfContent.cshtml,位于 /View/Shared 文件夹中。我是否刚开始以不同的方式实例化我的 ViewContext?

HtmlHelper helper = new HtmlHelper(new ViewContext(), viewData);
var a = helper.Partial("TableOfContent");
Run Code Online (Sandbox Code Playgroud)
   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)
Run Code Online (Sandbox Code Playgroud)

Bru*_*oLM 0

这将调用视图而不需要控制器(对于部分视图)。

Html.Partial(partialViewName);
Run Code Online (Sandbox Code Playgroud)

另请参见Html.Partial方法重载

  • “HTML”对象的类型是“HTMLHelper”。要实例化它,您需要一个 ViewContext。要实例化 ViewContext,您需要一个 ControllerContext...回到同一问题。无控制器。 (6认同)