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 的客户端验证来进行模拟和文件访问。

任何帮助将不胜感激。

4

2 回答 2

2

总结一下,检查页面在按钮单击处理程序中是否有效。

protected void ProcessButton_Click(object sender, EventArgs e)
{
        if (Page.IsValid)
        {
            //do button stuff
        }   
}
于 2013-07-24T18:25:09.960 回答
0

“验证控件测试用户输入,设置错误状态并生成错误消息。它们不会更改页面处理流程 - 例如,如果它们检测到用户输入错误,它们不会绕过您的代码。相反,您可以测试状态在执行特定于应用程序的逻辑之前,您的代码中的控件。如果您检测到错误,您将阻止您自己的代码运行;页面继续处理并返回给用户并带有错误消息。

来自 MSDN

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

于 2014-01-16T03:27:59.123 回答