[英]C# TextBox.Validating Cancel Event for ASPX
我正在尝试将代码从WinForm转换为WinApp,但是我对aspx知之甚少,而对javascript却一无所知。
我已经以编程方式创建了一个文本框,该文本框将给出文本。 然后,文本通过验证方法传递,如下所示:
text.Validating += new CancelEventHandler(boolean_Validating);
去
private void boolean_Validating(object sender, CancelEventArgs e)
{
TextBox textBox = (TextBox)sender;
string boolean = textBox.Text;
string message = null;
if (!checkBooleanSyntax(boolean, out message))
{
Response.Write("Error: " + message);
e.Cancel = true;
textBox.Text = message;
}
}
ASPX没有text.Validating
部分的定义。 我还能如何使用取消事件处理程序来验证文本?
在asp.net中,我们使用验证控件。 这些可以在客户端(如果用户未在浏览器中禁用javascript)然后在服务器端(因此,可以确保用户不仅会禁用js,而且可以立即自由利用您的应用程序)来完成这项工作。 。
如果您需要使用特定逻辑进行一些特殊的验证,则可以编写一个自定义验证程序控件。
不能在此处写所有内容,因为该主题可以在书中的多个章节中涉及,但请在此处查找更多信息: http : //www.w3schools.com/aspnet/aspnet_refvalidationcontrols.asp
似乎您已成为长期使用有状态应用程序的牺牲品。 Web服务器不会取消请求-您只需获取提供给您的信息,然后向他们发送响应。
因此,如果您想验证文本框的文本,通常将有一个按钮提交到服务器,然后该按钮单击代码将使用该值并对其进行验证。 如果无效,则用HTML标记页面或显示一些控件,然后将该信息呈现回用户的浏览器。
例:
<asp:TextBox ID="textName" runat="server" CssClass="someTextYo" />
<asp:Panel ID="panelError" runat="server" Visible="false">
You entered bad stuff, yo
</asp:Panel>
<asp:Button ID="buttonSubmit" runat="server" Click="buttonSubmit_Click" />
然后在您的代码中:
protected void buttonSubmit_Click(object sender, EventArgs e)
{
if(string.IsNullOrEmpty(textName.Text))
{
panelError.Visible = true;
}
else
{
// Save to Database, whatever
}
}
此外,您可以使用javascript在客户端上验证这些组件,从而消除往返服务器的需要(尽管您仍然应该验证数据服务器端)。 例如,使用jQuery:
$('form').submit(function()
{
if($.trim($('.someTextYo').val()) == '')
return false;
return true;
});
您可以通过证明返回false
的表单提交回调来取消表单发布。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.