ASP.NET取消表单中文本输入框Enter响应的方法

0 下载量 107 浏览量 更新于2024-08-04 收藏 19KB DOCX 举报
ASP.NET 实现取消页面表单内文本输入框 Enter 响应的方法 在 ASP.NET 编程中,经常会遇到这样一个问题:在服务器 TextBox 控件上按下 Enter 键,页面会回发刷新一遍。这是因为 ASP.NET 2.0 为表单处理专门设置的 "EnterKey" 功能。为了解决这个问题,我们需要实现取消页面表单内文本输入框 Enter 响应的方法。 在实现这个方法前,我们需要了解 ASP.NET 的事件处理机制。ASP.NET 提供了多种事件处理机制,如 Page_Load、Page_Init、Page_PreRender 等。我们可以在 Page_Init 事件中注册服务器控件的 onKeyDown 脚本事件,以防止服务器控件按下 Enter 键直接回发。 下面是一个简单的实现示例: ```csharp using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public class BasePage : System.Web.UI.Page { public BasePage() { } protected override void OnInit(EventArgs e) { base.OnInit(e); CancelFormControlEnterKey(this.Page.Form.Controls); } /// <summary> /// 在这里我们给 Form 中的服务器控件添加客户端 onKeyDown 脚步事件,防止服务器控件按下 Enter 键直接回发 /// </summary> /// <param name="controls"></param> private void CancelFormControlEnterKey(ControlCollection controls) { foreach (Control control in controls) { if (control is TextBox) { TextBox textBox = (TextBox)control; textBox.Attributes.Add("onkeydown", "if(event.keyCode==13)event.returnValue=false;"); } else if (control is DropDownList) { DropDownList dropDownList = (DropDownList)control; dropDownList.Attributes.Add("onkeydown", "if(event.keyCode==13)event.returnValue=false;"); } else if (control is CheckBox) { CheckBox checkBox = (CheckBox)control; checkBox.Attributes.Add("onkeydown", "if(event.keyCode==13)event.returnValue=false;"); } else if (control is RadioButton) { RadioButton radioButton = (RadioButton)control; radioButton.Attributes.Add("onkeydown", "if(event.keyCode==13)event.returnValue=false;"); } else if (control is Button) { Button button = (Button)control; button.Attributes.Add("onkeydown", "if(event.keyCode==13)event.returnValue=false;"); } else if (control.HasControls()) { CancelFormControlEnterKey(control.Controls); } } } } ``` 在上面的代码中,我们继承了 Page 类,并在 OnInit 事件中注册了服务器控件的 onKeyDown 脚本事件。在 CancelFormControlEnterKey 方法中,我们遍历 Form 中的所有服务器控件,并添加了 onKeyDown 事件处理程序,以防止服务器控件按下 Enter 键直接回发。 在实际应用中,我们可以将这个基类继承到我们的页面中,从而实现取消页面表单内文本输入框 Enter 响应的方法。 ASP.NET 实现取消页面表单内文本输入框 Enter 响应的方法可以通过注册服务器控件的 onKeyDown 脚本事件来实现。这可以防止服务器控件按下 Enter 键直接回发,提高用户体验。