7

国際化されたサイトにアクセスした人が言語を変更できるようにしたい. 選択した言語を Cookie に保存するのが最善の方法だと思いました。そのため、ページが読み込まれると、Cookie で優先言語を検索できます。

クッキーの書き込みは完璧に進んでいますが、読み取ろうとするとエラーが発生し続けます。私は C# を初めて使用するので、Visual Studio がスローするエラーを翻訳するのに苦労しています。

lang という文字列で「UserSettings」という Cookie の値が必要です。私はこのようにしようとしています:

string lang = Request.Cookies["UserSettings"].Value;

スローされるエラーは次のとおりです。

オブジェクト参照がオブジェクト インスタンスに設定されていません

左側の文字列を初期化しているので、問題はステートメントの右側にあるはずだと考えています。

また、次のようにしてCookieのインスタンスを作成してみました

HttpCookie cookie = Request.Cookies["UserSettings"].Value;

しかし、ビジュアルスタジオはこれをまったく好きではありません。

私は何を間違っていますか?Request オブジェクトのインスタンスを作成する必要がありますか? どんな助けでも大歓迎です。

このトピックに関するさまざまなチュートリアルに従っていますが、すべて同じエラーが発生します。

編集:私は私が持っていることに気づきました

HttpCookie cookie = Request.Cookies["UserSettings"].Value;

私はそれを次のように変更しました:

HttpCookie cookie = Request.Cookies["UserSettings"]; 

運が悪い、それはまだうまくいきませんでした。

編集:これが私のクッキーの作り方です

 public void Application_BeginRequest()
    {
        myCookie = new HttpCookie("UserSettings");
        myCookie.Value = "nl";
        myCookie.Expires = DateTime.Now.AddDays(1);
        Response.Cookies.Add(myCookie);
        hc = new HomeController();
    }

私の Cookie は 100% そこにあります。Firefox の Web 開発者で見ることができます。

更新:これは私が今呼んでいる正確なコードです

        public string getLang()
    {
       // HttpCookie aCookie = Request.Cookies["UserSettings"];
       //  string lang = Server.HtmlEncode(aCookie.Value);
       //  if (lang != null)
       // {
       //      currentLanguage = lang;
       //  }
        return currentLanguage;
    }

この方法でコードがコンパイルされ、コードのコメントを外すと、ドットが消えます(このメソッドの最初の行でエラーが発生します)

4

7 に答える 7

8

Cookieが設定されていないようです。その場合、これを確認する必要があります:

HttpCookie aCookie = Request.Cookies["UserSettings"];
if(aCookie != null) {
     object userSettings = aCookie.Value;
} else {
     //Cookie not set.
}

クッキーを設定するには:

HttpCookie cookie = new HttpCookie("UserSettings");

cookie["UserSettings"] = myUserSettingsObject;
cookie.Expires = DateTime.Now.AddYears(1);
Response.Cookies.Add(cookie);

ここに良い記事があります:http://www.java2s.com/Code/ASP/Session-Cookie/CreateandretrieveCookiedataC.htm

于 2012-06-14T09:09:20.940 に答える
6

これを試すことができますか?

HttpCookie aCookie = Request.Cookies["UserSettings"];
string lang = Server.HtmlEncode(aCookie.Value);

http://msdn.microsoft.com/en-us/library/ms178194.aspx

編集これは役に立ちますか? asp.net mvc がベース コントローラーの Cookie データにアクセスできない

于 2012-06-14T08:51:31.920 に答える
0
HttpCookie myCookie = new HttpCookie("UserSettings");
myCookie = Request.Cookies["UserSettings"];
string lang = myCookie.Value.ToString();
于 2013-12-23T20:22:57.167 に答える
0

まず、Cookie が作成されているかどうかを確認します。 このためには、Firefox を使用し、 webdeveloper
プラグインを追加 します。

于 2012-06-14T08:56:10.473 に答える
0

cookie.Path = "/"; を設定してみてください。

クッキーを追加する前。

于 2015-12-30T22:06:15.580 に答える