我是c#的新手,但我试图做的不是在每个actionresult中都有if语句。
我可以为控制器创建一个if语句,并为每个actionresult运行吗?
public InformationController {
if (Session["CharacterName"] == null)
{
return RedirectToAction("logon", "Auth");
}
类似的东西?
答案 0 :(得分:1)
我会通过为此实现IRouteConstraint来创建一个类,并使用它构建我的路由。
答案 1 :(得分:1)
像这样创建一个ActionFilterAttribute
:
public class MyFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//your logic here
}
}
并将此属性应用于您的控制器
[MyFilter]
public class MyController : Controller
答案 2 :(得分:1)
这看起来像Action Filter的主要候选人。像这样:
public class CheckSessionCharacterNameAttribute : FilterAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Session["CharacterName"] == null)
{
filterContext.Result = new RedirectToRouteResult(...);
}
}
}
答案 3 :(得分:0)
对于ASP.Net MVC框架,我更喜欢实现ActionFilterAttribute类....