【发布时间】:2014-10-28 19:15:02
【问题描述】:
我需要在控制器中实现一个 ActionFilterAttribute [POST] ActionResult()。问题是,如果验证失败,我会尝试“重定向”到某个页面……但它不起作用。验证运行,但随后返回到ActionResult() 下一行,最后当视图返回时,才“重定向”到验证中列出的页面。最终我需要的是停止 ActionResult() 语句并“重定向”到验证中列出的页面。我试过OnActionExecuting() 和OnActionExecuted() 但没有任何效果
我需要...
filterContext.HttpContext.Response.Redirect (loginUrl, true);
逃跑,“重定向”指示的页面
我的代码:
[HelperSomeValidations("")]
[HttpPost]
public ActionResult Create(Pais pais)
{
try
{
PaisBLL.saveNew(pais);
}
catch (Exception ex)
{
ViewBag.error = ex;
return View(“Error”);
}
return RedirectToAction(“Index”);
}
public class HelperSomeValidations : ActionFilterAttribute
{
public HelperSomeValidations(String permiso)
{
this.permiso = permiso;
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var user = filterContext.HttpContext.Session["coco"];
if (user == null) //validates if the user just login
{
//send them off to the login page
var url = new UrlHelper(filterContext.RequestContext);
var loginUrl = url.Content(“~/Usuario/Login”);
filterContext.HttpContext.Response.Redirect(loginUrl, true);
}
else
{
if (permission != “”)
{
//does some validations with “permission”
}
}
}
}
谢谢!
【问题讨论】:
-
您有使用动作过滤器吗?我可以使用
AuthorizeAttribute发布一个示例,这似乎更适合这里。 -
@webnoob:
AuthorizeAttribute和ActionFilterAttribute都是FilterAttributes。相同的原则适用于两者。 -
@StriplingWarrior 哎呀,又出现了那个术语……谢谢。我会留下评论以防其他人感到困惑:)
标签: c# asp.net-mvc