Create Cookie ASP.NET & MVC
本文关键字:amp MVC NET Cookie ASP Create | 更新日期: 2023-09-27 18:06:07
我有一个很简单的问题。我想在客户端创建一个cookie,这是由服务器创建的。我找到了很多描述如何使用它的页面,但我总是停留在同一点上。
我有一个DBController
,当有对DB的请求时被调用。
DBController
的构造函数是这样的:
public class DBController : Controller
{
public DBController()
{
HttpCookie StudentCookies = new HttpCookie("StudentCookies");
StudentCookies.Value = "hallo";
StudentCookies.Expires = DateTime.Now.AddHours(1);
Response.Cookies.Add(StudentCookies);
Response.Flush();
}
[... more code ...]
}
我得到错误"对象引用未设置为对象的实例":
StudentCookies.Expire = DateTime.Now.AddHours(1);
这是一种基本的错误信息。我忘记了什么基本的东西?
问题是你不能在控制器的构造函数中添加响应。Response对象还没有创建,所以它得到的是一个空引用,尝试添加一个方法来添加cookie并在action方法中调用它。像这样:
private HttpCookie CreateStudentCookie()
{
HttpCookie StudentCookies = new HttpCookie("StudentCookies");
StudentCookies.Value = "hallo";
StudentCookies.Expires = DateTime.Now.AddHours(1);
return StudentCookies;
}
//some action method
Response.Cookies.Add(CreateStudentCookie());
使用Response.SetCookie()
,因为Response.Cookie.Add()
可以添加多个cookie,而SetCookie()
将更新现有的cookie。所以我认为你的问题可以解决。
public DBController()
{
HttpCookie StudentCookies = new HttpCookie("StudentCookies");
StudentCookies.Value = "hallo";
StudentCookies.Expires = DateTime.Now.AddHours(1);
Response.SetCookie(StudentCookies);
Response.Flush();
}
使用
Response.Cookies["StudentCookies"].Value = "hallo";
您可以使用控制器的Initialize()
方法而不是构造函数。在初始化函数中,Request
对象是可用的。我怀疑可以对Response
对象采取相同的操作。