Мне нужно реализовать ActionFilterAttribute [POST]
ActionResult() в контроллере. Проблема в том, что я пытаюсь «перенаправить» на страницу, если проверка не прошла ... Но она не работает. Проверка выполняется, но затем возвращается к следующей строке ActionResult()
и, наконец, при возврате представления, только после этого «перенаправляется» на страницу, указанную в валидации. В конечном итоге мне нужно остановить операторы ActionResult() и «перенаправить» на страницу, указанную в валидации. Я попытался OnActionExecuting()
и OnActionExecuted()
, но не работает какой-либоasp.net mvc validate [HttpPost] ActionResult()
Мне нужно ...
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”
}
}
}
}
Thks!
У вас ** есть ** для использования фильтра действий? Я могу опубликовать пример с использованием 'AuthorizeAttribute', который, похоже, будет лучше здесь. – webnoob
@webnoob: 'AuthorizeAttribute' и' ActionFilterAttribute' оба являются 'FilterAttribute'. Те же самые принципы применимы к обоим. – StriplingWarrior
@StriplingWarrior Упс, там снова идет эта терминология ... Спасибо. Я оставлю комментарий на месте, если кто-то еще запутался :) – webnoob