【发布时间】:2019-06-18 17:14:50
【问题描述】:
我希望访问我的国际化网站的人能够更改语言。我认为最好的方法是将选择的语言存储在 cookie 中 - 这样当页面加载时,它可以在 cookie 中查找首选语言。
编写 cookie 很完美,但是我在尝试读取它时一直遇到错误。 由于我是 C# 新手,我无法翻译 Visual Studio 向我抛出的错误。
我想要一个名为 'UserSettings' 的 cookie 的值在一个名为 lang 的字符串中。我正在尝试这样:
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"];
但运气不好,还是没用。
编辑:这就是我的 cookie 的制作方式
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;
}
这样我的代码就可以编译了,如果我取消注释我的代码,它就会编译(错误@此方法的第一行)
【问题讨论】: