asp.net
  • validation
  • internet-explorer-8
  • 2010-02-05 38 views 1 likes 
    1

    我有一个asp:FormView控件(在ascx文件中),它被加载到一个门户页面以及一些其他控件。asp.net验证控件在javascript中导致“随机”错误

    我需要为表单添加验证,但是当我添加任何验证控件时,我会在加载页面时在生成的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"时,错误消息确实出现并且数据未保存。

    因此,现在意味着我有一个随机脚本错误(目前)似乎不会影响页面的工作。

    但是,我仍然想删除错误 - 以防万一它隐藏了其他内容。

    +0

    指定的行似乎没问题。你使用的是Internet Explorer吗? IE有时会给出错误的行号。您可以尝试使用Microsofts脚本编辑器进行调试:http://www.jonathanboutelle.com/mt/archives/2006/01/howto_debug_jav.html – Pbirkoff 2010-02-05 13:21:38

    +0

    由于错误消息指示javascript行未终止,因此我首先将尝试从100,000删除逗号。 – 2010-02-05 13:24:00

    +0

    @Pbirkoff - 我正在使用IE浏览器,但是如果我添加并删除其他验证元素,行号会根据添加/删除的代码进行移动。我会尝试Firefox。 – ChrisF 2010-02-05 13:24:44

    回答

    3

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

    但是,没有从M $的分辨率 - 你必须以不同的方式来生成的ID ...

    +0

    有趣的链接。我认为我没有任何带有“。”的控制ID,但我会仔细检查。 – ChrisF 2010-03-04 09:33:10

    +0

    刚刚选中,没有“。”,但生成的名称长度为160个字符。也许这就是问题所在。需要更多的调查。 – ChrisF 2010-03-04 09:38:45

    +2

    是的,你确实有一个禁止使用的字符:“ - ”。 看看Control.ID注意http://msdn.microsoft.com/en-us/library/system.web.ui.control.id.aspx 使用guid.ToString(“n”)如果这是唯一的问题。 彼得伊凡 – 2010-03-05 09:18:20

    0

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

    HTH。

    +0

    这是我的第一个想法,但我所做的唯一更改是将''添加到aspx中。我没有在页面中添加任何新的JavaScript,这真是令我困惑。 – ChrisF 2010-02-05 14:20:33

    相关问题