Я строю ниже фильтра:Реализация IActionFilter
public class TestflowFilter : FilterAttribute, IActionFilter
{
public void OnActionExecuted(ActionExecutedContext filterContext)
{
var profileId = int.Parse(ClaimsPrincipal.Current.GetClaimValue("UserId"));
var appId = int.Parse(filterContext.RouteData.Values["id"].ToString());
if (profileId != 0 && appId != 0)
{
if (CheckIfValid(profileId, appId))
{
// redirect
filterContext.Result = // url to go to
}
}
}
public void OnActionExecuting(ActionExecutingContext filterContext)
{
}
}
я на самом деле нужно только OnActionExecuted
, но так как IActionFilter
является интерфейс я должен их как реализовать. Можно ли оставить OnActionExecuting
пустым, если мне ничего не нужно, или мне нужно вызвать базовую версию, которую всегда запускает MVC?
Также в методе OnActionExecuted
, если CheckIfValid
is true
Я перенаправляю пользователя, но если нет, я ничего не делаю. Это нормально или мне нужно установить некоторое свойство на filterContext
.
Это не требуется для заполнения 'OnActionExecuting' с кодом. В случае 'OnActionExecuted', нормально не присваивать значение filterContext.Result, это означает, что asp.net продолжает конвейер нормального жизненного цикла. – Balde