我希望能够在控制器中获取视图生成的HTML代码字符串,对其进行修改,然后将其添加到我的JsonResult中。我找到了一些可以从部分视图执行此操作的代码,但我想从aspx视图中执行此操作。
额外解释:假设我有一个名为Frame.aspx的页面,/Controller/Frame 将返回该页面。我想在输出响应之前获取它,以便我可以用jsonp包装它。我不想每次都在代码中编辑返回结果,这就是为什么我想以编程方式加载视图的原因。
当前,/Controller/Frame 返回Frame.aspx的内容:
现在将sb用jsonp包装起来:
额外解释:假设我有一个名为Frame.aspx的页面,/Controller/Frame 将返回该页面。我想在输出响应之前获取它,以便我可以用jsonp包装它。我不想每次都在代码中编辑返回结果,这就是为什么我想以编程方式加载视图的原因。
当前,/Controller/Frame 返回Frame.aspx的内容:
<html><body>hello</body></html>
假设有一个函数可以将视图呈现为字符串构建器。StringBuilder sb = new StringBuilder();
RenderView(sb, "Frame");
现在将sb用jsonp包装起来:
public JsonResult Frame(string callback)
{
StringBuilder sb = new StringBuilder();
RenderView(sb, "Frame");
return new JsonResult
{
Data = "(function() { " + callback + "(" + clientResponse + "); })();"
,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}