也许这是一个奇怪的问题,但想象一下:
//We all know that View is a method...
public ActionResult Something()
{
return View("index");
}
但是,如果我在此方法之前执行某些统计数据
,该怎么办?public ActionResult Something()
{
return PerformStats(View("index"));
}
我将有一个像这样的私人方法:
private ActionResult PerformStats(ViewResult viewResult)
{
//THIS IS WHAT I WANT TO ACCHIEVE:
//*********************************
var contentSent = viewResult.InnerHtml.Lengh; <<-- I wish!
return viewResult;
}
后者,我想做的是保存发送给客户端的大量内容。 如果它是html的确切数量并不重要,即使我得到了json的.count()它也可以做到这一点。
有没有办法知道控制器上的渲染内容?
谢谢!
答案 0 :(得分:1)
OnActionExecuting
:在执行操作方法之前调用。你可以把统计相关的逻辑放在那里。
http://msdn.microsoft.com/en-us/library/system.web.mvc.iactionfilter.onactionexecuting(v=vs.98).aspx
OnActionExecuted
:在执行操作方法后调用。
http://msdn.microsoft.com/en-us/library/system.web.mvc.iactionfilter.onactionexecuted(v=vs.98).aspx
在这些方法中,您可以访问ActionExecuting
和ActionExecutedContext
如果你想获得渲染HTML(部分或完整视图)的大小,那么你可能需要:
有一个问题解释了如何在操作方法中将视图呈现为字符串:In MVC3 Razor, how do I get the html of a rendered view inside an action?