c#mvc3控制器,具有一个整体if语句

本文关键字:if 语句 有一个 控制器 具有一 c#mvc3 | 更新日期: 2023-09-27 18:27:04

我是c#的新手,但我想做的是什么,而不是在每个actionresult中都有if语句。

我能为控制器提供一个完整的if语句,并为每个actionresult运行它吗?

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

像那样的东西?

c#mvc3控制器,具有一个整体if语句

创建这样的ActionFilterAttribute

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

并将此属性应用于您的控制器

[MyFilter]
public class MyController : Controller

我会为此实现IRouteConstraint来创建一个类,并用它建立我的路由。

这看起来像是Action Filter的主要候选者。类似这样的东西:

public class CheckSessionCharacterNameAttribute : FilterAttribute, IAuthorizationFilter
{
    public void OnAuthorization(AuthorizationContext filterContext)
    {
        if (filterContext.HttpContext.Session["CharacterName"] == null)
        {
            filterContext.Result = new RedirectToRouteResult(...);
        }
    }
}

在ASP.Net MVC框架的情况下,我更喜欢实现ActionFilterAttribute类。。。。