2012-08-15 67 views
1

我的頁面是註冊頁面,用戶輸入電子郵件地址和密碼。這裏是我的單擊事件:回發後文本框丟失值

protected void btnRegister_Click(object sender, EventArgs e) 
{ 
    MembershipCreateStatus createStatus = MembershipCreateStatus.ProviderError; 

    MembershipUser user = Membership.CreateUser(txtUsername.Text, 
     txtPassword.Text, txtEmail.Text, null, null, true, out createStatus); 

    if (createStatus != MembershipCreateStatus.Success) 
    { 
     cvUser.IsValid = false; 
     cvUser.ErrorMessage = "Invalid"; 
    } 
    else 
     Response.Redirect("Home"); 
} 

這裏是我的網頁:

<asp:ValidationSummary ID="vs" runat="server" /> 

<asp:TextBox ID="txtUsername" runat="server" /> 
<asp:TextBox ID="txtEmail" runat="server" /> 
<asp:TextBox ID="txtPassword" runat="server" TextMode="Password" /> 

<asp:Button ID="btnRegister" runat="server" OnClick="btnRegister_Click" /> 
<asp:CustomValidator ID="cvUser" runat="server" ControlToValidate="txtEmail" /> 

cvUser是我的網頁上一個自定義的驗證,我使用,使該錯誤信息會出現在我的ValidationSummary

因此,當用戶創建失敗時會出現問題。我將cvUser.IsValid設置爲false,以便顯示錯誤,然後重新加載頁面。只有當頁面重新加載時,我的文本框中的所有數據都消失了。

有沒有辦法維護這些數據?

+1

您是否有任何代碼正在運行以在頁面上創建控件?如何將文本框添加到頁面?在ASPX或代碼背後? – 2012-08-15 16:54:33

+1

我希望你正在做一個Page_Load/Init/PreRender/Render,它應該被包裹在'!Page.IsPostBack' – 2012-08-15 16:57:34

+0

你需要顯示你的初始化事件,正如J託雷斯所建議的那樣,你可能正在擦除它。 – 2012-08-15 17:00:48

回答

0

回發後,需要手動重新填充表單項或確保其值不被覆蓋。後者可以通過在Page_Load方法中放置任何表單填充代碼來完成,但是可以用if(!IsPostBack){}塊封裝。

if (!IsPostBack) 
{ 
    //populate form items 
} 
else //this is a post back 
{ 
    //do nothing 
}