2011-09-23 58 views
0

我有一個自定義驗證的窗體。表單上有一個按鈕,可讓用戶進入「確認頁面」以顯示訂單的所有細節。驗證忽略與PostBackUrl或Response.Redirect使用C#

對網頁驗證

<asp:TextBox ID="txtBillingLastName" Name="txtBillingLastName" 
runat="server" CssClass="txtbxln required"></asp:TextBox> 
    <asp:CustomValidator 
    ID="CustomValidatorBillLN" runat="server" 
    ControlToValidate="txtBillingLastName" 
    OnServerValidate="CustomValidatorBillLN_ServerValidate" 
    ValidateEmptyText="True"> 
    </asp:CustomValidator> 

背後

protected void CustomValidatorBillLN_ServerValidate(object sender, ServerValidateEventArgs args) 
    { 
     args.IsValid = isValid(txtBillingLastName); 
    } 

但是驗證碼,如果我添加了一項PostBackUrl或Response.Redirect的到按鈕的onclick方法,所有的驗證控件都將被忽略。

我可以用onclick方法調用所有的驗證方法,但這似乎不是一個優雅的解決方案。

我試過設置CausesValidation = False沒有運氣。

有什麼建議嗎?

回答

1

當然,如果無條件重定向,驗證將被忽略。你應該叫this.IsValid您重定向像

protected btRedirect_Click(object sender, EventArgs e) 
{ 
    if (this.IsValid) 
    Response.Redirect(...); 
} 
1

檢查這個代碼

void ValidateBtn_OnClick(object sender, EventArgs e) 
    { 
    // Display whether the page passed validation. 
    if (Page.IsValid) 
    { 
     Message.Text = "Page is valid."; 
    } 

    else 
    { 
     Message.Text = "Page is not valid!"; 
    } 
    } 

    void ServerValidation(object source, ServerValidateEventArgs args) 
    { 
    try 
    { 
     // Test whether the value entered into the text box is even. 
     int i = int.Parse(args.Value); 
     args.IsValid = ((i%2) == 0); 
    } 

    catch(Exception ex) 
    { 
     args.IsValid = false; 
    } 
    } 

和HTML端代碼之前

<form id="Form1" runat="server"> 

    <h3>CustomValidator ServerValidate Example</h3> 

    <asp:Label id="Message" 
     Text="Enter an even number:" 
     Font-Name="Verdana" 
     Font-Size="10pt" 
     runat="server"/> 

    <p> 

    <asp:TextBox id="Text1" 
     runat="server" /> 

    &nbsp;&nbsp; 

    <asp:CustomValidator id="CustomValidator1" 
     ControlToValidate="Text1" 
     ClientValidationFunction="ClientValidate" 
     OnServerValidate="ServerValidation" 
     Display="Static" 
     ErrorMessage="Not an even number!" 
     ForeColor="green" 
     Font-Name="verdana" 
     Font-Size="10pt" 
     runat="server"/> 

    <p> 

    <asp:Button id="Button1" 
     Text="Validate" 
     OnClick="ValidateBtn_OnClick" 
     runat="server"/> 

欲瞭解更多信息,請查看Custom validator

希望我的回答能幫助你解決你的問題。