我们如何使用c#在asp.net中的登录页面中创建会话 给我充分的例子......
答案 0 :(得分:18)
假设您的代码在页面中(内联或后面的代码中),您可以使用...
DataType someValue = (DataType)Session["SessionVariableNameHere"]; //Getter
Session["SessionVariableNameHere"] = someNewValue; //Setter
显然,您需要正确命名会话变量,并在将其从会话中退回时转换为适当的数据类型。
编辑 - 完整示例
protected void Login1_LoggedIn(object sender, EventArgs e)
{
Session["LoginTime"] = DateTime.Now;
}
以及后来的页面加载......
protected void Page_Load(object sender, EventArgs e)
{
Literal1.Text = "Last Online: " + ((DateTime)Session["LoginTime"]).ToString("yyyy-MM-dd");
}
答案 1 :(得分:4)
当用户输入正确的用户名&密码。创建一个会持有标志的会话
if(userLoggedInSuccessfully)
{
Session["SessionVariableName"] = "Flag";
}
如果您在页面中使用母版页,请查看page_load
page_load()
{
if(Session["SessionVariableName"] != null)
{
if(Session["SessionVariableName"]=="Flag")
{
//Valid User
}
else
{
//Invalid user
}
}
else
{
//Session expired
}
}
答案 2 :(得分:4)
我通常定义一个(基本)页面级属性,并尝试避免每次必须引用时对会话变量名进行硬编码。这是一个例子:
在Constants.cs中:
public static class Constants
{
public static class SessionKeys
{
public static string MY_SESSION_VARIABLE = "MySessionVariable"; //Or better yet - a newly generated GUID.
}
}
在页面的代码隐藏中,定义您的属性:
protected MyType MyVariable
{
get
{
MyType result = null;
object myVar = Session[Constants.SessionKeys.MY_SESSION_VARIABLE];
if (myVar != null && myVar is MyType)
{
result = myVar as MyType;
}
return result;
}
set
{
Session[Constants.SessionKeys.MY_SESSION_VARIABLE] = value;
}
}
在页面的代码隐藏中,引用属性:
//set
MyVariable = new MyType();
//get
string x = MyVariable.SomeProperty;