Asp.net mvc 3 OnResultExecuted()代码解释
文件中说: 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);
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。。。那没有发生吗?是的,你是对的。请编辑您的答案,我会将其标记为已接受。这是你应得的