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

有一个公司的小项目,尝试着用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.gif function  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.gif function  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.gif var  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.gif function  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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值