ASP.NET 私​​有成员字段在回发时丢失值

标签 asp.net postback

考虑以下代码:

    public partial class TeacherControlPanel : System.Web.UI.Page
    {
        protected string username = string.Empty;

        protected void Page_Load(object sender, EventArgs e)
        {
            username = (string)Request.QueryString["username"];

            Ice_Web_Portal.BO.Teacher teacher = Ice_Web_Portal.BO.Teacher.GetTeacherByUsername(username);

            if (teacher != null)
            {
                labUsername.Text = username;
                labName.Text = teacher.TeacherName;
                labTeacherCode.Text = teacher.TeacherCode;

                Dept dept = teacher.Department;

                if (dept != null)
                {
                    labDepartment.Text = dept.DeptName;
                }
            }
            else
            {
                //labErrorMessage.Text = "No teacher found";
            }
        }

        protected void btnSendMail_Click(object sender, EventArgs e)
        {
            Response.Redirect(@"~/Teacher/TeacherComposeMail.aspx?username=mahabub" + username);            
        }
}

在此代码中,当我将“用户名”声明为私有(private)时,它会在后续回发后初始化为 null。

为什么?

secret 是什么?

最佳答案

因为 ASP.NET 是无状态的,这意味着它不会在回发之间保持状态。将用户保存到 View 状态、 session 或应用程序,以便在回发时查看它。

#region UserName
public string UserName
{
    get
    {
        if (this.ViewState["UserName"] == null)
            return string.Empty;

        return (string)this.ViewState["UserName"];
    }
    set { this.ViewState["UserName"] = value; }
}
#endregion

关于ASP.NET 私​​有成员字段在回发时丢失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1313697/

相关文章:

c# - 接口(interface)作为一个用于继承的原因,而不是实现者

jquery - 使用 jquery 从 HTML 页面中提取名称

asp.net - 字段不应超过 4 个字符且字符应唯一

asp.net - 进行删除源 CS 文件的构建

persistence - 使用 Knockoutjs 在回发之间保留 View 模型

asp.net-mvc - 在 ASP.NET MVC 中,有哪些方法可以停止表单的多次回发?

c# - 如何在客户端(使用 javascript)和服务器端(使用 c#)验证 mac 地址和 ip 地址

javascript - 如何根据客户端asp.net中的某些条件禁用单选按钮的回发?

c# - ListBox 实现了 IPostBackDataHandler,但当 EnableViewState 设置为 false 时,为什么它不能像 TextBox 一样保持其状态?