ASP.NET私有成员字段在回发时丢失值(ASP.NET private member field loses value on postback)

编程入门 行业动态 更新时间:2024-10-12 03:21:38
ASP.NET私有成员字段在回发时丢失值(ASP.NET private member field loses value on 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); } }

在这段代码中,当我将'用户名'声明为私有时,它在后续回发之后被初始化为空。

为什么?

什么秘密?

Consider the following code:

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); } }

In this code, when I am declaring 'username' as private, it is initialized to null after subsequent post backs.

Why?

What is the secret?

最满意答案

因为ASP.NET是无状态的,这意味着它不会保留从回发到回发的状态。 将用户保存到视图状态,会话或应用程序以在回发到回发时查看它。

#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

Because ASP.NET is stateless meaning it does not keep it state from post back to postback. Save the user to the viewstate, session, or application to see it on postback to postback.

#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

更多推荐

本文发布于:2023-04-29 08:58:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1335637.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字段   成员   回发时   NET   ASP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!