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

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


    function CardNumberIsOkResult(result)
    {
        obj.IsValid 
    = result;
    }
    但是还是不成功,验证控件没有发挥作用。
    我试验过,如果这样用:
    function CardNumberIsOk(source, arguments)
    {
        arguments.IsValid 
    = false;
        
    //Ywlj.Card_number_verived(arguments.Value,CardNumberIsOkResult);
    }
    验证控件就发挥了作用。
    我又跟踪了source,发现它就是CardNumberIsOk验证控件,但是它已经变成了一个<span>对象。其余的细节就跟踪不到了。
    我已经束手无策了,那位高人走过路过,千万要帮帮忙看看那!!!谢谢
    不要和我说用同步的Webservice调用啊,那我为什么还要用asp.net ajax?
  • 相关阅读:
    SetTransform
    D3DXCreateText
    《高级游戏特性实现》考试样题
    KeyUp
    .FX File
    CMD
    X File Class
    《DirectX游戏设计》考试样题
    ps图片处理效果——很nice哦
    学习篇:来点水货要天天学习!!!
  • 原文地址:https://www.cnblogs.com/panda/p/543174.html
Copyright © 2011-2022 走看看