2013-07-24 64 views
0

我在.aspx文件如下:消防定製驗證之前處理其他代碼

<asp:CustomValidator 
     ID="JobIDCustomFieldValidator" 
     runat="server" 
     ControlToValidate="JobID" 
     OnServerValidate="jobIDCustom_ServerValidate" 
     EnableClientScript="false" 
     SetFocusOnError="true" 
     Display="Dynamic" 
     ErrorMessage="! - Not Found" 
     CssClass="validationError"> 
    </asp:CustomValidator> 
    <br />   
    <asp:TextBox ID="JobID" runat="server"></asp:TextBox> 
    <asp:Button runat="server" ID="ProcessButton" Text="Process" onclick="ProcessButton_Click" /> 

在我的代碼,我有以下隱藏文件:

protected void ProcessButton_Click(object sender, EventArgs e) 
    { 
     Response.Write("I am in here"); 
    } 

    protected void jobIDCustom_ServerValidate(object sender, ServerValidateEventArgs e) 
    { 
     // Impersonate a user for shared folder access. 
     using (UserImpersonation user = new UserImpersonation(properties.ShareUser, properties.Domain, properties.SharePassword)) 
     { 
      e.IsValid = false; 

      // Check the user credentials. 
      if (user.ImpersonateValidUser()) 
      { 
       e.IsValid = File.Exists(@"\\\\" + properties.RemoteServer + "\\" + properties.Share + "\\" + JobID.Text + ".dat"); 
      } 
     } 
    } 

我想自定義驗證到首先檢查,如果它是假停止,並且不運行ProcessButton_Click()方法中的任何代碼。這可能嗎?如果沒有,我可以設置它的另一種方法?

據我所知,我不能使用客戶端驗證與JavaScript做模擬和文件訪問。

任何幫助將不勝感激。

+1

應該自動的CausesValidation = 「真正的」 做你的按鈕,對不對? –

+0

@CjS。我向我的按鈕添加了CausesValidation =「true」,但當自定義驗證失敗並打印錯誤消息時,它仍然在ProcessButton_Click()中運行代碼。 – Baxter

+1

如何添加Page.Validate();並在你的按鈕點擊處理程序中測試Page.IsValid? –

回答

1

總結檢查頁面在按鈕點擊處理程序中是否有效。

protected void ProcessButton_Click(object sender, EventArgs e) 
{ 
     if (Page.IsValid) 
     { 
      //do button stuff 
     } 
} 
0

「驗證控件測試用戶輸入,設置錯誤狀態,併產生錯誤信息。他們不改變頁面的處理,例如流,他們不會繞過你的代碼,如果檢測到用戶輸入錯誤而是在執行特定於應用程序的邏輯之前測試代碼中的控件狀態,如果檢測到錯誤,則會阻止自己的代碼運行;頁面會繼續處理並返回給用戶,並顯示錯誤消息。

從MSDN

http://msdn.microsoft.com/en-us/library/dh9ad08f(v=vs.90).aspx

相關問題