在C#类之间传递值
本文关键字:之间 | 更新日期: 2023-09-27 17:57:47
我对C#的奇妙世界很陌生,不知道如何处理这样的问题。
我有一个。NET网站,我有一个主页main.aspx
(及其后面的main.aspx.cs
)和一个游戏页面game.aspx
(也有game.aspx.cs
)。
在main.aspx.cs
的主类中,我有一个静态变量private static string _username;
,还有一个名为getUsername的方法,它只返回这个值。
现在,在我的游戏类(game.aspx.cs
)中,我有一个事件处理程序saveButton_Click()
,在这个函数中,我需要_username
的值!
如果有帮助,用户从主页开始,然后登录…如果登录有效,则会保存变量_username
,然后用户单击链接转到game.aspx
页面!
我已经研究了内部关键字,但我不确定如何在这个特定的例子中使用它,甚至不确定在这个例子中使用是否正确!
要回答您的问题,您可以在一个单独的类中创建一个公共静态属性。
但是,不要。
当两个人同时使用你的网站时,这种模式会非常失败(甚至更糟)。
相反,您应该使用会话状态。
将其添加到您的主页面和游戏页面类中:
protected string UserName {
get {
string retVal=string.Empty;
if (!string.IsNullOrEmpty(Session["UserName"]))
retVal=Session["Username"].ToString();
return retVal;
}
set{
Session["UserName"]=value;
}
}
然后从您的代码中访问该属性;
您必须使用Sessions
在多个页面中存储和访问值:
//To store value in session variable
Session["UserName"] = "UserName";
//To access the value in the session variable
String UserName = Session["UserName"];
查看详细信息ASP。NET会话状态
IMHO,您可以使用基于表单的身份验证,这将使通过User.Identity.Name
获取用户名变得非常简单。