ascx页面中的javascript引发HTTPexception 函数ValidateProductID(发送方,参数) { var productID=document.getElementById(“”).value; var productType=document.getElementById(“”).value; if(productID!=“”&productType=“”){ args.IsValid=false; } 其他的 args.IsValid=true; }

ascx页面中的javascript引发HTTPexception 函数ValidateProductID(发送方,参数) { var productID=document.getElementById(“”).value; var productType=document.getElementById(“”).value; if(productID!=“”&productType=“”){ args.IsValid=false; } 其他的 args.IsValid=true; },javascript,asp.net,validation,httpexception,Javascript,Asp.net,Validation,Httpexception,自定义验证器的此脚本正在引发异常 System.Web.dll中发生了“System.Web.HttpException”类型的异常,但未在用户代码中处理其他信息:无法修改控件集合,因为控件包含代码块(即) 有人能告诉我如何修复它吗。将ClientIDMode=“Static”添加到这些文本框(或任何文本框)中,只需使用document.getElementById('txtProductID').value ,将clientdmode设置为Static意味着: ClientID值设置为ID属性

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

System.Web.dll中发生了“System.Web.HttpException”类型的异常,但未在用户代码中处理其他信息:无法修改控件集合,因为控件包含代码块(即)

有人能告诉我如何修复它吗。

ClientIDMode=“Static”
添加到这些文本框(或任何文本框)中,只需使用
document.getElementById('txtProductID').value

,将
clientdmode
设置为
Static
意味着:

ClientID值设置为ID属性的值

这意味着ID不会被某些算法更改,而是
txtProductID
而不是必须使用
txtProductID.ClientID
访问的内容


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

显然,我将脚本从内容模板中删除,并将其与现有代码一起移动,它就可以工作了

getElementById(“”)似乎正在引发异常。javascript中是否有其他方法可以获取控制值?document.getElementById('txtProductID')。值不起作用。这在较旧版本的.Net framework上不起作用。可能,但仍然值得注意的是,ClientMode并不总是可用的+1用于提供多个解决方案。@WebGuy是真的,但通常如果OP使用的是旧版本的ASP.NET(<4.0),他们会提到这一点。我的回答还提供了另一个解决方案(移动脚本),尽管我对5年前使用相关技术的解决方案感到满意(ASP.NET 4.0版本:)。虽然是的,但正如你所说,你的评论值得注意。
<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;
}