在文档中说:
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
内?
谢谢!
答案 0 :(得分:1)
我的理解是它在视图渲染后调用...所以基本上,你不能改变在视图中执行的任何东西。
因此记录类型活动更多......
它将按以下方式执行:
OnActionExecuting.Home:Index
OnActionExecuting.Home:Suppliers
OnActionExecuted.Home:Suppliers
OnActionExecuting.Home:News
OnActionExecuted.Home:News
OnActionExecuted.Home:Index
所以误解的是,供应商和新闻动作实际上是在Index方法中呈现的,并且在View中定义的所有动作实际上都是自我呈现之前,Index方法还没有“执行”。