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