C# 在筛选前具有阻止操作结果
在我的控制器中,我有:C# 在筛选前具有阻止操作结果,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,在我的控制器中,我有: protected override void OnActionExecuting(..) { .OnActionE.. if(...) { Response.Redirect("/Login"); } } public ActionResponse Index() { return View(); } 文档说明OnActionExecuting是在索引之前运行的,但这不是真的。虽然Response.Redirect确实会发生,但只有在对索
protected override void OnActionExecuting(..)
{
.OnActionE..
if(...)
{
Response.Redirect("/Login");
}
}
public ActionResponse Index()
{
return View();
}
文档说明OnActionExecuting是在索引之前运行的,但这不是真的。虽然Response.Redirect确实会发生,但只有在对索引求值之后才会发生。是否可能让筛选器阻止索引执行 OnActionExecuting在操作之前运行,但它不会阻止操作也运行。为此,可以设置ActionExecutingContext的Result属性。也许是这样的:
public override void OnActionExecuting(ActionExecutingContext context)
{
base.OnActionExecuting(context);
context.Result = new RedirectResult("/Login");
}
如果在框架管道中的任何位置设置了结果,则应防止后续操作(包括其他筛选器)执行。什么是.onAction。。一点通常情况下,发布太多代码的错误要比潜在地修改问题的根源要好,这里似乎就是这样。文档100%准确,问题是您使用的功能错误。通常,最好假设你做错了什么,而不是你是第一个发现某个功能有问题的人,而该功能每天都有成千上万的开发人员成功使用。@CraigW。我怎么用错了。David发布了我所期望的解决方案,但无法在文档中找到它。