mvc实现只查看一次的页面

时间:2012-04-11 08:52:26

标签: asp.net-mvc-3

我想为我的网站实施条款和条件页面,要求用户接受条款和条件,并可能将该值存储在Cookie中,以便我可以判断他们是否已接受并且不会持续提示他们,而不是所有用户会有帐户,所以我认为cookie是去那里的方式。

只是想到实现这一目标的最佳方法,最好使用在网站上的任何操作之前执行的全局过滤器,并重定向到条款和条件页面(保存所请求页面的某个位置),如果用户尚未登录,或者有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

将处理T& C POST的行动方法:

Session["AcceptedTC"] = true;

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class AcceptedTermsCheck : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        // Check if AcceptedTC is set to true

        // If set, then do nothing

        // Otherwise redirect to TC page
    }
}

使用属性的原因是,您可能有一些页面不需要用户接受条款和条件。如果您要对Application_BeginRequest进行检查,那么您将没有这种灵活性。

答案 1 :(得分:1)

另一种选择是覆盖global.asax文件中的Application_BeginRequest方法。

protected void Application_BeginRequest(object sender, EventArgs e)
{
   if(ShouldIShowMessage())
   {
       this.Response.Redirect("RedirectUrl");
   }
}

private bool ShouldIShowMessage()
{
   // Decision logic here
}

修改 我只是想,澄清你的决定逻辑仍然需要像一个cookie,但它节省了必须用属性装饰控制器或添加全局过滤器。