0

ここで同様の質問がされていることは知っていますが、それでも機能させるのに苦労しています。

ASP.NET MVC 3 を使用して、モバイル デバイスを対象とした html 5 Web サイトを作成しています。

以前、高価なデータを保存および取得する方法について別の質問をしたことがあり、セッション変数を使用することにしました。

私はアプリを完成させ、内部テストを開始しましたが、Web サイトが一部の iPhone で機能しないことに気付くまで、すべて順調でした。調査の結果、セッション変数は Cookie に依存し、一部の iPhone はデフォルトで Cookie が無効になっていることがわかりました。

より良い解決策が見つかるまで、Cookie が有効になっているかどうかを確認し、エラー ページにリダイレクトしたいと考えています。

これを行うためのすべてのコードをベースコントローラーで記述できることを望んでいましたが、その方法がわかりませんでした。代わりに、次のコードをベースコントローラーに入れます...

protected void WriteCookie()
{
    Response.Cookies.Add(new HttpCookie("cookie_test"));
}

protected bool CookieCheck()
{
    return (Request.Cookies["cookie_test"] != null);
}

次に、ホームコントローラーで、ビューをロードする前に WriteCookie メソッドを呼び出しています。ビュー自体には、2 つのコントローラー/アクションのいずれかにリダイレクトする JavaScript があります。通常呼び出されるコントローラー/ビュー (html 5 が場所を解決できなかったため) は、ChangeLocation / Index コントローラー/アクションです。そこには次のコードがあります...

if (!CookieCheck())
{
    RedirectToAction("CookieRequired", "Error");
}

Cookie を無効にしても、上記のエラー ページにリダイレクトされません。

したがって、私が探しているのは、かなり完全なコード サンプルを使用してこの問題を解決するためのベスト プラクティス アプローチです。

私のホームコントローラーは、ほぼ常に別のページにリダイレクトしています(コントローラーではなくJavaScriptで)。合計約6つのアクションを持つ合計約4つのコントローラーがあります。

私の理想は、この問題をベースコントローラーで完全に解決することです。そうでない場合は、有効な URL が入力されても (つまり、Web アプリがホーム/インデックスから入力されていなくても) 機能することを望みます。そうでない場合は、少なくともコードで示したものが機能し (ホーム/インデックスに Cookie を設定し、他のコントローラー/アクションで確認する)、リダイレクトがコントローラーで発生している場合でも機能するようにします。

4

0 に答える 0