asp.net ajax的困惑:webservice回调函数对验证控件的IsValid属性值无法赋值的问题!!!help me, my god!!!...

本文探讨了在ASP.NET AJAX中使用ValidatorCalloutExtender控件时遇到的问题,特别是通过WebService进行异步验证时出现的错误,并尝试了多种解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有一个公司的小项目,尝试着用Atlas进行修改,完成了80%,哈哈,微软又把Atlas改成了asp.net ajax,得,一切又要从头再来。
看到了新的asp.net ajax toolkit中的ValidatorCalloutExtender控件的效果,酷极了,尝试应用,学习吗,就要不断地挑战自己!!!
果不其然,碰到问题了!
None.gif<div class="linelist">
None.gif    
<label id="cardnumber" class="label">积分卡号:</label><asp:TextBox ID="card_number" runat="server" CssClass="textbox"></asp:TextBox>
None.gif
</div>
None.gif
<!--检验积分卡号码的长度是否是5位,并提示错误-->
None.gif            
<asp:CustomValidator Display="None" runat="server" ID="CardNumberCReq" ControlToValidate="card_number" ClientValidationFunction="CardNumberValidation" ErrorMessage="<b>积分卡的卡号格式不正确</b><br />请输入由5个数字组成的积分卡卡号"></asp:CustomValidator>
None.gif            
<ajaxToolkit:ValidatorCalloutExtender runat="Server" ID="CardNumberReqL" TargetControlID="CardNumberCReq" HighlightCssClass="highlight" />
None.gif            
<!--检验积分卡的号码是否已经存在,如果在数据库中存在,提示错误信息-->
None.gif            
<asp:CustomValidator Display="None" runat="server" ID="CardNumberIsOk" ControlToValidate="card_number" ClientValidationFunction="CardNumberIsOk" ErrorMessage="<b>这张积分卡已经发行过了!!!</b><br />请检查您所输入的积分卡卡号"></asp:CustomValidator>
None.gif            
<ajaxToolkit:ValidatorCalloutExtender runat="Server" ID="CardNumberIsOkMessage" TargetControlID="CardNumberIsOk" HighlightCssClass="highlight" />
第一组控件检测了该TEXTBOX空间的输入内容是否为5位长,因javascript校验代码比较简单,我在此就不贴出来了。
第二组空间,需要检测输入的记分卡号,在数据库中,是否存在,因为以前的代码中使用的就是webservice校验,所以还是不想修改太多的代码,就直接去套用了以前的webservice.
下面贴出javascript校验函数的代码:
None.giffunction CardNumberIsOk(source, arguments)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    Ywlj.Card_number_verived(arguments.Value,CardNumberIsOkResult);
ExpandedBlockEnd.gif}
代码中的:Ywlj.Card_number_verived(arguments.Value,CardNumberIsOkResult);为标准的asp.net ajax调用webservice的标准用法。
Ywlj.Card_number_verived为webservice中的WebMethod,作用为检验输入的积分卡号在数据库中是否已经存在,返回值为Bool型。
CardNumberIsOkResult为WebMethod的回调函数,代码如下:
None.giffunction CardNumberIsOkResult(result)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
//alert(result);
InBlock.gif
    //$get("<%=this.CardNumberIsOk%>").ClientID.IsValid = result;
ExpandedBlockEnd.gif
}
但是问题出现了:
显示返回值正确,但是将返回值赋给验证控件时,提示为:
Microsoft JScript 运行时错误: 缺少对象。
我尝试过用各种办法来获得验证控件的对象,但是都不成功。
后来我跟踪了运行代码,发现客户端校验函数中:
function CardNumberIsOk(source, arguments)
arguments有连个属性,一个是需要校验的内容,一个就是IsValid属性。
但是我尝试过这种用法:
None.gifvar obj;
None.gif
function CardNumberIsOk(source, arguments)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    obj 
= arguments;
InBlock.gif    Ywlj.Card_number_verived(arguments.Value,CardNumberIsOkResult);
ExpandedBlockEnd.gif}

None.gif
None.gif
function CardNumberIsOkResult(result)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    obj.IsValid 
= result;
ExpandedBlockEnd.gif}
但是还是不成功,验证控件没有发挥作用。
我试验过,如果这样用:
None.giffunction CardNumberIsOk(source, arguments)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    arguments.IsValid 
= false;
InBlock.gif    
//Ywlj.Card_number_verived(arguments.Value,CardNumberIsOkResult);
ExpandedBlockEnd.gif
}
验证控件就发挥了作用。
我又跟踪了source,发现它就是CardNumberIsOk验证控件,但是它已经变成了一个<span>对象。其余的细节就跟踪不到了。
我已经束手无策了,那位高人走过路过,千万要帮帮忙看看那!!!谢谢
不要和我说用同步的Webservice调用啊,那我为什么还要用asp.net ajax?

转载于:https://www.cnblogs.com/panda/archive/2006/10/28/543174.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值