2013-07-24 28 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

相关问题