我有一个非常简单的ASP.NET Web窗体,它看起来有点像以下所示:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="example.aspx.cs" Inherits="example" %>
<form runat="server">
<asp:GridView runat="server" id="grid" AutoGenerateColumns="false" OnRowCommand="DoStuff">
<Columns>
<asp:ButtonField Text="Do stuff" />
</Columns>
</asp:GridView>
</form>
(在pageload中我调用
grid.DataBind()
和事件处理程序
DoStuff
无标记。)
当我在Internet Explorer中查看它并单击ButtonField(呈现为链接)时,事件处理程序将按预期激发。当我在火狐中点击它时,什么都不会发生。
如果我打开Firebug的javascript调试控制台,然后单击链接,它会在javascript中显示一个错误。
onclick
由ASP.NET自动生成的处理程序:
theForm is undefined
__doPostBack("grid", "$0")
javascript:__doPostBack('grid', '$0')()
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {\r\n
为什么会发生这种情况?我如何使buttonfield在Firefox中工作?
(注意,我在问这个问题
in order to answer it myself
:我已经发现了我为什么会看到上面的错误,为了自己和他人的利益,我想把它记录下来。如果您知道其他使用ASP.NET和Firefox的gotchas,请随意添加其他答案。)