繁体   English   中英

C#TextBox.Validating ASPX的取消事件

[英]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

http://msdn.microsoft.com/en-us/library/aa479013.aspx

似乎您已成为长期使用有状态应用程序的牺牲品。 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM