div 的 id= "end" 在母版页中断 .NET 验证



快速信息:我使用的是最新版本的.NET 2.0,下面是我为重现错误而编写的精简测试页

不包括头位,(没有included/inline css或javascript)我的内容页面看起来像这样:

<asp:Content ID="Content1" ContentPlaceHolderID="cphMain" runat="server">
<div>
    <asp:ValidationSummary ID="ValidationSummary1" runat="server" />
    <asp:TextBox ID="txtStuff" runat="server"></asp:TextBox>
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtStuff" Display="None" ErrorMessage="need to fill it with words">  </asp:RequiredFieldValidator>
    <asp:Button ID="bClick" runat="server" Text="Kerlick" />
</div>
</asp:Content>

我的主页面(不包括标题位)如下:

<body>
<form runat="server" id="Form1">
                <div>
                    <asp:ContentPlaceHolder ID="cphMain" runat="server">
                    </asp:ContentPlaceHolder>
                </div>
                <div id="end">
                </div>
</form>
</body>

单击按钮后,页面在函数的WebResource.axd中抛出"Microsoft JScript运行时错误:对象不支持此属性或方法"错误ValidationSummaryOnSubmit(验证组)(第512行)。

事实证明,如果我将id="end"的div的id更改为"end"以外的其他内容,则可以解决问题。

现在,我已经解决了这个问题,但我很感兴趣的是,为什么它一开始就会崩溃?

是否有可能验证摘要呈现了一个具有相同ID的div,并且在某个地方混淆了?

一种确定答案的方法。

加载firebug,调用validationsummary并浏览页面以查看添加了哪些新元素。

通常,重复的ID不会产生问题,而且您没有设置runat服务器,因此它不是服务器端控件。

非常有趣的

最新更新