Asp.net mvc 3 OnResultExecuted()代码解释

Asp.net mvc 3 OnResultExecuted()代码解释,asp.net-mvc-3,events,controller,action-filter,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);

文件中说:

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
@model-IList;
@{
布局=空;
}
@Model.FirstOrDefault(x=>x.Name==“Mike”)

@Action(“Suppliers”、“Home”)//Action在没有额外调用的情况下呈现一个简单的部分
@Action(“News”、“Home”)//Action在没有额外调用的情况下呈现简单的部分
问题:

在哪一点将调用
OnResultExecuted()
,假设它位于
BaseController


谢谢大家!

我的理解是,它是在视图渲染后调用的。。。因此,基本上,您不能更改视图中已执行的任何内容

所以更多的是日志类型的活动

将按以下方式执行:

OnActionExecuting.Home:Index

  OnActionExecuting.Home:Suppliers
  OnActionExecuted.Home:Suppliers

  OnActionExecuting.Home:News
  OnActionExecuted.Home:News

OnActionExecuted.Home:Index

因此,误解是供应商和新闻操作实际上是在索引方法中呈现的,而索引方法在视图中定义的所有操作实际呈现出来之前都没有“执行”。

您的思考似乎与我的想法很接近。但当我试图依靠假定的行为在ResultExecuted()内部执行一些代码工作时,会发生一些奇怪的事情。在索引呈现到最后之前,它被调用为Suppliers方法。我可以想象它被调用的顺序是:Suppliers,News,然后Index。。。那没有发生吗?是的,你是对的。请编辑您的答案,我会将其标记为已接受。这是你应得的