簡體   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