MVC3“全局变量”

时间:2012-07-06 14:43:47

标签: asp.net-mvc-3

我正在使用Windows身份验证创建MVC Intranet应用程序。访问的数据是特定于年份的,因此我需要一种方法来设置一个全局变量,无论是会话还是其他任何必须在执行任何查询之前设置的变量。

我无法找到强制用户登录的方法,因为他们已经通过他们的Windows登录凭据获得授权,因此使用属性强制登录似乎有问题。

我发现用户可以导航到任何特定页面,并尝试在没有定义年份的情况下提取数据并造成一些破坏。

我想做的是强制用户选择年份选择页面,如果尚未设置年份变量,则选择他们希望访问的年份。

我已经检查了相关问题,但它们似乎没有为我目前的难题提供答案。

1 个答案:

答案 0 :(得分:1)

你可以编写一个自定义的ActionFilter,它放在你所有的控制器上(当然不是你必须选择年份的动作)。如果未选择年份,则重定向到控制器/操作,您可以在其中选择年份。

public class CheckYearAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if(<YEAR IS NOT SET>)//redirect
        {
            filterContext.Result = new RedirectToRouteResult(
                new RouteValueDictionary {{ "Controller", "YourController" },
                                      { "Action", "YourAction" } });
        }

        base.OnActionExecuting(filterContext);
    }
}