1

我在一个页面中有 2 个 Asp 按钮(buttonUsername 和 buttonReset)。第一个执行 AD 搜索,并设置一个私有变量,而第二个按钮执行一个操作,使用先前设置的变量。

public partial class ResetPassword : System.Web.UI.Page {
    private UserPrincipal tmpPwdUser;

    protected void buttonUsername_Click(object sender, EventArgs e) {
        this.tmpPwdUser = ...
    }

    protected void buttonReset_Click(object sender, EventArgs e) {
        myObj.myFunction(this.tmpPwdUser); // --> this.tmpPwdUser is void
    }
}

我的问题:this.tmpPwdUser在函数中正确设置buttonUsername_Click,但是当buttonReset_Click事件被触发时,变量this.tmpPwdUsernull. 我猜当事件被触发时,页面会重新加载,所以每个局部变量都会被重置。有没有办法在单击按钮 si 时保留状态?

4

2 回答 2

2

正如您所怀疑的,为新请求创建了一个新的表单实例。您必须在这些请求之间保留变量的值。一种方法是将值存储在ViewState中。
您可以创建一个辅助属性来存储和检索 ViewState 中的值:

private UserPrincipal TmpPwdUser
{
  get
  {
    return ViewState["UniqueViewStateKey"] As UserPrincipal;
  }
  set
  {
    ViewState["UniqueViewStateKey"] = value;
  }
}
于 2013-10-28T15:44:37.173 回答
0

尝试使用 OnEvent 属性而不是 onclick

在 Submit_Command(object sender, CommandEventArgs e) { } 后面的代码中按钮上的属性 ( OnCommand="Submit_Command")

于 2013-10-28T15:34:20.507 回答