ASP.Net自定义客​​户端验证

det 发布于 2018-02-07 asp.net 最后更新 2018-02-07 01:04 581 浏览

我在.Net 2.0网站上的用户控件中的JavaScript中有一个自定义的验证函数,它检查支付的费用是否不超过应付的费用。 我已经将验证器代码放在ascx文件中,我也尝试使用Page.ClientScript.RegisterClientScriptBlock(),在这两种情况下,验证都会触发,但无法找到JavaScript函数。 Firefox错误控制台的输出是“feeAmountCheck未定义”。这里是函数(这是直接从firefox->查看源代码)

<script type="text/javascript">
    function feeAmountCheck(source, arguments)
    {
        var amountDue = document.getElementById('ctl00_footerContentHolder_Fees1_FeeDue');
        var amountPaid = document.getElementById('ctl00_footerContentHolder_Fees1_FeePaid');
if (amountDue.value > 0 && amountDue >= amountPaid)
        {
            arguments.IsValid = true;
        }
        else
        {
            arguments.IsValid = false;
        }
return arguments;
    }
</script>
任何想法,为什么函数没有被发现?我怎样才能补救这一点,而不必将功能添加到我的母版页或消费页面?
已邀请:

wet

赞同来自:

当你使用.Net 2.0和Ajax时,你应该使用:

ScriptManager.RegisterClientScriptBlock
它将在Ajax环境中更好地工作,然后旧的Page.ClientScript版本

ehic

赞同来自:

尝试将参数名称更改为senderargs。而且,在您使用之后,无论使用的是AJAX,都将调用切换到ScriptManager.RegisterClientScriptBlock

det

赞同来自:

虽然我仍然想回答为什么我的javascript没有被识别,我同时找到的解决方案(应该首先完成)是使用Asp:CompareValidator而不是Asp:CustomValidator

uharum

赞同来自:

你也可以使用:

var amountDue = document.getElementById('<%=YourControlName.ClientID%>');
这将自动解析元素的客户端ID,而不必弄清楚它被称为'ctl00_footerContentHolder_Fees1_FeeDue'