контроллер c # mvc3, имеющий общий оператор if - PullRequest
0 голосов
/ 06 марта 2012

я новичок в c #, но я пытаюсь сделать это вместо оператора if в каждом результате действия.

Могу ли я иметь общий оператор if для контроллера и просто запустить его для каждого результата действия?

public InformationController {
if (Session["CharacterName"] == null)
{
 return RedirectToAction("logon", "Auth");
}

что-то подобное?

Ответы [ 4 ]

1 голос
/ 06 марта 2012

Создайте ActionFilterAttribute следующим образом:

public class MyFilterAttribute : ActionFilterAttribute
{
   public override void OnActionExecuting(ActionExecutingContext filterContext)
   {
        //your logic here
   }
}

и примените этот атрибут к вашему контроллеру

[MyFilter]
public class MyController : Controller
1 голос
/ 06 марта 2012

Это выглядит как главный кандидат на Фильтр действий .Как то так:

public class CheckSessionCharacterNameAttribute : FilterAttribute, IAuthorizationFilter
{
    public void OnAuthorization(AuthorizationContext filterContext)
    {
        if (filterContext.HttpContext.Session["CharacterName"] == null)
        {
            filterContext.Result = new RedirectToRouteResult(...);
        }
    }
}
1 голос
/ 06 марта 2012

Я бы создал класс, реализовав для этого IRouteConstraint, и построил с ним мою маршрутизацию.

0 голосов
/ 06 марта 2012

В случае ASP.Net MVC framework я предпочитаю реализовывать класс ActionFilterAttribute ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...