我的.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进行客户端验证来进行模拟和文件访问。
非常感谢任何帮助。
答案 0 :(得分:1)
总结检查按钮点击处理程序中页面是否有效。
protected void ProcessButton_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
//do button stuff
}
}
答案 1 :(得分:0)
“验证控制测试用户输入,设置错误状态并生成错误消息。它们不会更改页面处理流程 - 例如,如果他们检测到用户输入错误,则不会绕过您的代码。相反,您在执行特定于应用程序的逻辑之前测试代码中控件的状态。如果检测到错误,则会阻止自己的代码运行;页面将继续处理并返回给用户并显示错误消息。“
来自MSDN
http://msdn.microsoft.com/en-us/library/dh9ad08f(v=vs.90).aspx