我做了一点测试ASP.NET Web应用程序只包含default.aspx和target.aspx;在default.aspx上我可以在文本框上输入一个名字,然后我可以点击按钮或按文本框上的ENTER键提交表单。
我注意到,如果我将按钮控件的 UseSubmitBehavior 设置为 True (将按钮在浏览器上呈现为“input type ='submit”按钮),我在文本框中输入名称,然后立即按ENTER键,IE和Chrome / FF之间的默认行为将有所不同:在IE上,将调用服务器端事件处理程序Page_Load但不调用Button1_Click;在Chrome / FF上,将调用Page_Load和Button1_Click;在Chrome / FF上看起来有点棘手,因为我没有点击页面上的Button,但是它仍然调用了服务器端的Button1_Click事件处理程序? IE的默认行为是直接提交表单,而Chrome / FF会尝试在表单上找到第一个“input type ='submit”元素并调用它的click方法来执行提交操作吗? default.aspx的代码如下。非常感谢!
[default.aspx]
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs"
Inherits="KeyEventTestWeb._default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button"
onclick="Button1_Click" />
<br />
<br />
<asp:Label ID="lblIsPostBack" runat="server"></asp:Label>
</div>
</form>
</body>
</html>
[default.aspx.cs]
namespace KeyEventTestWeb
{
public partial class _default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
lblIsPostBack.Text += "IsPostBack=" + IsPostBack.ToString() +
"<br>";
}
protected void Button1_Click(object sender, EventArgs e)
{
lblIsPostBack.Text += "Button1_Click()" + "<br>";
Session["name"] = TextBox1.Text;
Response.Redirect("target.aspx");
}
}
}