2

ユーザーが利用規約に同意することを要求する利用規約ページを実装したいと思います。おそらくその値をCookieに保存して、ユーザーが同意したかどうかを確認し、継続的にプロンプ​​トを表示しないようにします。すべてのユーザーがアカウントを持っているわけではありません。だから私はクッキーがそこに行く方法だと思います。

これを達成するための最善の方法を考えようとすると、サイトでのアクションの前に実行され、ユーザーがそうでない場合は利用規約ページにリダイレクトする(要求されたページをどこかに保存する)グローバルフィルターを使用するのが最善でしょうかログインしましたか、それとももっと良い方法がありますか?

4

2 に答える 2

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 でチェックを行う場合、その柔軟性はありません。

于 2012-04-11T09:22:36.227 に答える
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 のようなものが必要になると考えましたが、コントローラーを属性で装飾したり、グローバルフィルターを追加したりする必要がなくなります。

于 2012-04-11T09:29:54.523 に答える