如何在C#和ASP.NET MVC中读/写cookie

Agh*_*des 4 .net c# asp.net model-view-controller asp.net-mvc

我有cookie的问题,这是我在课堂上的读写代码:

public static class language
{
   public static void set_default(string name)
   {
       HttpContext.Current.Response.Cookies.Remove("language");
       HttpCookie language = new HttpCookie("language");
       language["name"] = name;
       language.Expires = DateTime.Now.AddDays(1d);
       HttpContext.Current.Response.Cookies.Add(language);
   }

   public static string get_default()
   {
       string name = string.Empty;
       HttpCookie langauge = HttpContext.Current.Response.Cookies.Get("language");
       name = langauge["name"];
       return name;
   }
}
Run Code Online (Sandbox Code Playgroud)

当我转到下一页并使用@language.get_default()获取默认语言时,响应是null- 为什么?

Ash*_*ani 8

在编写cookie时,您需要添加cookie Response.阅读它们时你应该使用Request:

HttpCookie language = HttpContext.Current.Request.Cookies.Get("language");
Run Code Online (Sandbox Code Playgroud)

所以这set_default()是正确的,但你应该改变get_default()


McK*_*bue 5

不确定language.Expires = DateTime.Now.AddDays(1d);是正确的。DateTime.Now.AddDays接受一个整数,而1d不接受。

创建Cookie:

HttpContext.Response.Cookies.Append("language", "ENGLISH", new CookieOptions()
            {
                Expires = DateTime.Now.AddDays(5)
            });
Run Code Online (Sandbox Code Playgroud)

获取COOKIE:

 string language = HttpContext.Request.Cookies["language"];
Run Code Online (Sandbox Code Playgroud)

删除Cookie:

HttpContext.Response.Cookies.Append("language", "", new CookieOptions()
            {
                Expires = DateTime.Now.AddDays(-1)
            });
Run Code Online (Sandbox Code Playgroud)

要么

HttpContext.Response.Cookies.Delete("language");
Run Code Online (Sandbox Code Playgroud)