asp.net验证控件在javascript中导致“随机”错误

时间:2010-02-05 13:11:36

标签: asp.net validation internet-explorer-8

我在控件(在ascx文件中)上有一个asp:FormView,它与一些其他控件一起加载到门户页面上。

我需要在表单中添加验证,但是当我添加任何验证控件时,在页面加载时生成的JavaScript中会出现明显的随机错误,并且在需要时验证不会触发。

这是我得到的代码:

<asp:TextBox ID="FPITextBox4" runat="server" Text='<%# Bind("SomeNumber") %>'></asp:TextBox>
<asp:RangeValidator ID="RangeValidator4" runat="server" ControlToValidate="FPITextBox4" Text="*"
    ErrorMessage="The number must be a whole number between 0 and 100,000" Type="Integer"
    MaximumValue="100000" MinimumValue="0" ToolTip="Must be between 0 and 100,000"></asp:RangeValidator>

这是我加载页面时遇到的错误:

Message: Expected ';'
Line: 1159
Char: 60
Code: 0

当我在生成的代码中查看第1159行时,它看起来像这样:

var ctl00_ctl00_main_col2_control_0_widgetcontrolX_3eba4918-7c7d-47aa-a089-
fd0ead0609fe_widgetcontrol_3eba4918-7c7d-47aa-a089-
fd0ead0609fe_FormView1_RangeValidator4 = document.all ?
document.all["ctl00_ctl00_main_col2_control_0_widgetcontrolX_3eba4918-7c7d-47aa-a089-
fd0ead0609fe_widgetcontrol_3eba4918-7c7d-47aa-a089-
fd0ead0609fe_FormView1_RangeValidator4"] :
document.getElementById("ctl00_ctl00_main_col2_control_0_widgetcontrolX_3eba4918-7c7d-
47aa-a089-fd0ead0609fe_widgetcontrol_3eba4918-7c7d-47aa-a089-
fd0ead0609fe_FormView1_RangeValidator4");

紧接其上方的代码是:

<script type="text/javascript"> 
//<![CDATA[
var Page_Validators =  new Array(document.getElementById(
"ctl00_ctl00_main_col2_control_0_widgetcontrolX_3eba4918-7c7d
-47aa-a089-fd0ead0609fe_widgetcontrol_3eba4918-7c7d-47aa-a089-
fd0ead0609fe_FormView1_RangeValidator4"));
//]]>
</script>

当控件刚刚单独实例化到测试页面时,相同的代码就可以工作。

似乎错误只发生在IE 8中。我在Firefox 3.6中测试了同一页面,它都按预期工作。

校正

似乎验证工作正常。我有一个ValidationSummary控件设置显示一个消息框,但没有出现,这让我相信验证没有触发。当我将其更改为ShowSummary="true" ShowMessageBox="false"时,错误消息确实显示,并且数据未保存。

所以现在的意思是我有一个随机脚本错误(目前)似乎没有影响页面的工作。

但是,我仍然希望删除错误 - 以防它隐藏其他内容。

2 个答案:

答案 0 :(得分:3)

你真的在.Net客户端生成代码中发现了一个错误 - 看看 http://haacked.com/archive/2006/07/14/ASP.NET2.0ClientValidationJavascriptBug.aspx

但M $没有解决方案 - 你必须以不同的方式生成ID ...

答案 1 :(得分:0)

我发现这种类型的错误是因为我的一个脚本中出现错误而导致丢失的。你的页面中是否有JS代码并且是正确的,没有遗漏的分号?

HTH。