我想知道如何设置一个全局变量,在ASP.net网站的所有网页中,命令都可以轻松访问该变量。
这会通过课堂完成吗?我该如何称呼它?
一个例子是持有一个唯一的用户ID,但能够在所有网页上使用该ID进行SQL查询。
显而易见的地方是Session
。
例如
Session["MyId"] = 99; // to set it
和
myId = Session["MyId"]; // to get it
有时会话会失败。。所以另一个地方是Cookies——假设它不是敏感数据。。
// Setting a cookie
HttpCookie myCookie = new HttpCookie("MyID");
DateTime now = DateTime.Now;
// Set the cookie value.
myCookie.Value = now.ToString();
// Set the cookie expiration date.
myCookie.Expires = now.AddMinutes(1);
// Add the cookie.
Response.Cookies.Add(myCookie);
您可以通过以下方式读取cookie:
HttpCookie myCookie = Request.Cookies["MyId"];
myId = myCookie.Value;
这实际上取决于具体的场景。你有各种各样的选择,会给你不同的行为。
通常,对于成为命令参数的ID,在生成链接以在页面之间传递它们时,您会将其作为查询字符串参数。也就是说,如果你有一个用于编辑用户的管理页面,你可能会生成一个URL列表,比如:
/Users/Edit.aspx?userID=123
/Users/Edit.aspx?userID=789
对于当前用户的ID,应该由身份验证机制提供。例如(根据您的身份验证方式,可能会有所不同):ASP.NET成员身份:当前用户ID存储在哪里?
从那里,任何其他用户级别的信息都可以通过外键出现在与用户ID相关的表中。
会话[]适用于当前用户的临时存储。它应该被视为临时的原因是,如果应用程序池被回收,它将过期或丢失。在这种情况下,这通常是好的,因为用户无论如何都必须重新登录并重新开始。只是不要储存任何真正重要的东西。
您可以使用静态类+静态属性来存储系统范围的信息。
作为最后的手段,我会避免吃饼干。我的应用程序中唯一涉及的cookie是身份验证框架自动创建的cookie,我从未直接接触过它们。关于用户或第三方恶意操纵cookie,您必须考虑很多情况。