0

我正在尝试将代码从 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零件的定义。我还能如何使用取消事件处理程序验证文本?

4

2 回答 2

0

看来您已经习惯了有状态的应用程序很长一段时间。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

于 2012-04-16T19:07:11.220 回答
0

在 asp.net 中,我们使用验证控件。那些可以在客户端处理工作(如果用户没有在他的浏览器中禁用 javascript)然后在服务器端(所以你可以确保用户不会只是禁用 js 并且可以立即自由地利用你的应用程序) .

如果您需要一些具有特定逻辑的特殊验证,您可以自己编写一个自定义验证器控件。

不能在这里全部写完,因为一本书中的多个章节可以涵盖这个主题,但请查看这里以获取更多信息: http ://www.w3schools.com/aspnet/aspnet_refvalidationcontrols.asp

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

于 2012-04-16T19:05:02.770 回答