【问题标题】:javascript in ascx page throwing HTTPexceptionascx页面中的javascript抛出HTTPexception
【发布时间】:2015-03-24 16:01:30
【问题描述】:
<script type="text/javascript">
function ValidateProductID(sender, args)
{
    var productID = document.getElementById('<%=txtProductID.ClientID%>').value;
    var productType = document.getElementById('<%=rcbProduct.ClientID%>').value;
    if (productID != "" && productType == "") {
        args.IsValid = false;
    }
    else
        args.IsValid = true;
}

自定义验证器的此脚本正在引发异常。

An exception of type 'System.Web.HttpException' occurred in System.Web.dll but was not handled in user code Additional information: The Controls collection cannot be modified because the control contains code blocks (i.e. &lt;% ... %&gt;).

谁能告诉我如何解决它。

【问题讨论】:

  • 似乎 getElementById('') 正在引发异常。 javascript中还有其他方法可以获取控制值吗??
  • document.getElementById('txtProductID').value 也不起作用

标签: javascript asp.net validation httpexception


【解决方案1】:

ClientIDMode="Static" 添加到这些文本框(或任何它们)中,然后使用document.getElementById('txtProductID').value;

Per the docs,将ClientIDMode设置为Static表示:

ClientID 值设置为 ID 属性的值。

这意味着 ID 不会被某些算法更改,并且将是 txtProductID,而不是您必须使用 txtProductID.ClientID 访问的东西。

您得到的错误通常是因为您将该脚本放在带有runat="server" 的其他控件中。上面的解决方案可能是您最简单的解决方案,尽管没有更多代码很难说。

【讨论】:

  • 这不适用于旧版本的 .Net 框架。
  • 可能,但仍然值得注意的是 ClientIDMode 并不总是可用。 +1 提供多种解决方案。
  • @RandomWebGuy 是的,但通常如果 OP 使用的是旧版本的 ASP.NET (
【解决方案2】:

显然,我将我的脚本从内容模板中移出,将其与现有代码一起移入并且它可以工作!

【讨论】:

    猜你喜欢
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    相关资源
    最近更新 更多