我想为我的网站实施条款和条件页面,要求用户接受条款和条件,并可能将该值存储在Cookie中,以便我可以判断他们是否已接受并且不会持续提示他们,而不是所有用户会有帐户,所以我认为cookie是去那里的方式。
只是想到实现这一目标的最佳方法,最好使用在网站上的任何操作之前执行的全局过滤器,并重定向到条款和条件页面(保存所请求页面的某个位置),如果用户尚未登录,或者有更好的方法吗?
答案 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,但它节省了必须用属性装饰控制器或添加全局过滤器。