在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页面!

我已经研究了内部关键字,但我不确定如何在这个特定的例子中使用它,甚至不确定在这个例子中使用是否正确!

在C#类之间传递值

要回答您的问题,您可以在一个单独的类中创建一个公共静态属性。

但是,不要

当两个人同时使用你的网站时,这种模式会非常失败(甚至更糟)。

相反,您应该使用会话状态。

将其添加到您的主页面和游戏页面类中:

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获取用户名变得非常简单。