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

时间:2011-06-22 18:22:26

标签: asp.net-mvc-3 wcf-binding

我想知道是否可以从不是控制器的类渲染视图。我看到的一切似乎都说你做不到。

我要做的是从WCF Web服务渲染部分视图,以便将其推送到其他位置。是否可以使用视图引擎?

谢谢!

更新

我继续使用HtmlHelper获取参数null异常。这是我的代码和堆栈跟踪。我的部分确实命名为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 :(得分:0)

This will call the view,无需控制器(部分视图)。

Html.Partial(partialViewName);

另见Html.Partial method overload

答案 1 :(得分:0)

以下是两个不同的想法:

  1. 我使用RazorEngine做了类似的事情。允许您将razor模板渲染为字符串。
  2. 创建控制器并使用WebClient调用操作。这假设您有一个MVC应用程序。