这似乎是一个常见问题,但我找不到解决方案。
我在我创建的登录控件中输入我的用户名和密码。然后,我输入密码后按 Enter 键,页面就会刷新。它会触发页面加载事件,但不会触发单击事件上的按钮。
如果我按下提交按钮,那么一切正常。
这似乎是一个常见问题,但我找不到解决方案。
我在我创建的登录控件中输入我的用户名和密码。然后,我输入密码后按 Enter 键,页面就会刷新。它会触发页面加载事件,但不会触发单击事件上的按钮。
如果我按下提交按钮,那么一切正常。
使用表单默认按钮是正确的,但您需要为其提供正确的 id,因为它将呈现为 HTML。
所以你按照乔恩上面所说的那样做:
<form runat="server" DefaultButton="SubmitButton">
但请确保您使用将呈现的 Button 名称。您可以通过在您的控件中公开 Button 或返回其 ClientId 的方法来实现这一点。
假设您的按钮称为 btnSubmit,并且您的控件 ucLogin 的实现。
给你的表格一个id
<form runat="server" id="form1">
然后在您的页面加载页面后面的代码中,通过将您的按钮客户端 ID 交给它来设置 DefaultButton。
protected void Page_Load(object sender, EventArgs e)
{
form1.DefaultButton = ucLogin.btnSubmit.ClientID;
}
如果您使用的是 ASP.NET 2.0 或更高版本,则可以为页面的表单设置默认按钮属性:
<form runat="server" DefaultButton="SubmitButton">
在文本输入上按 ENTER 会执行Form.onsubmit,而不是Button.onclick。
我想这是受到这样一个事实的启发,即您可以拥有一个没有实际提交按钮的表单(仅取决于 ENTER 的使用)。