id =“ end”在母版页上打破.NET验证
-
05-07-2019 - |
题
快速信息:我正在使用最新版本的.NET 2.0,以下是我为重现错误而编写的精简测试页。
排除标题位,(没有包含/内联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>
My Master页面(不包括标题位)如下所示:
<body>
<form runat="server" id="Form1">
<div>
<asp:ContentPlaceHolder ID="cphMain" runat="server">
</asp:ContentPlaceHolder>
</div>
<div id="end">
</div>
</form>
</body>
单击该按钮时,该页面将引发“Microsoft JScript运行时错误:对象不支持此属性或方法”错误,在函数中的 WebResource.axd 中 ValidationSummaryOnSubmit(validationGroup)(第512行)。
原来,如果我将 ID =&quot; end&quot; 的div的id更改为“end”之外的其他内容。它解决了这个问题。
现在,我已经解决了这个问题,但我很感兴趣为什么这会在第一时间打破?
验证摘要是否有可能呈现具有相同ID的div并且在某处感到困惑?
解决方案
一种确定的方法。
加载firebug,调用validationsummary并浏览页面以查看添加了哪些新元素。
通常,重复的ID不会产生问题,而且您没有设置runat服务器,因此它不是服务器端控件。
非常有趣
不隶属于 StackOverflow