OnResultExecuted()代码解释

时间:2014-01-13 11:25:18

标签: asp.net-mvc-3 events controller action-filter

在文档中说:

  

OnResultExecuted() - 在执行操作方法返回的操作结果后调用。

我不明白“执行行动结果后”是什么意思。这是一个例子:

public class HomeController:BaseController {

//....
public ActionResult Index()
{
    var user = _repository.GetAllUsers();
    return View(@"~/Views/Home/Index.cshtml", user);
}

public ActionResult Suppliers()
{
     var suppliers = _repository.GetAllSuppliers();
     return PartialView(@"~/Views/Home/_Suppliers.cshtml",suppliers)
}

public ActionResult News()
{
     var news = _repository.GetAllNews();
     return PartialView(@"~/Views/Home/_News.cshtml",news)
}
// Other

Index.cshtml视图

@model IList<User>;
@{
   Layout=null;
 }

@Model.FirstOrDefault(x => x.Name=="Mike")
</br>
@Html.Action("Suppliers","Home")  //action renders a simple partial no extra calls
</br>
@Html.Action("News","Home") //action renders a simple partial no extra calls

问题:

此时会调用OnResultExecuted(),假设它位于BaseController内?

谢谢!

1 个答案:

答案 0 :(得分:1)

我的理解是它在视图渲染后调用...所以基本上,你不能改变在视图中执行的任何东西。

因此记录类型活动更多......

它将按以下方式执行:

OnActionExecuting.Home:Index

  OnActionExecuting.Home:Suppliers
  OnActionExecuted.Home:Suppliers

  OnActionExecuting.Home:News
  OnActionExecuted.Home:News

OnActionExecuted.Home:Index

所以误解的是,供应商和新闻动作实际上是在Index方法中呈现的,并且在View中定义的所有动作实际上都是自我呈现之前,Index方法还没有“执行”。