使用Asp,Net AJAX可以通过PageMethods异步调用页面上的一个函数,但是能不能调用一个WebControl的页面上的函数呢? 我有一个页面,包含了一个登录的WebControl,通过AJAX的异步调用来实现服务器端的登录验证。 我希望能够把所有的和登录相关的操作封装在这个WebControl,所以在这个WebControl中使用了ScriptManangerProxy,在WebControl的ascx文件中实现了一个登录的函数Logon。 可是问题来了,当我试图访问这个页面上的Logon函数时,javascript抛出了Object   Error的异常。 当我把这个Logon函数移到包含这个WebControl的aspx页面上,一切就正常。但是这样做意味着我需要在每一个用到登录控件的页面上都实现这个Logon函数。 请问有什么方法可以做到直接访问WebControl的ascx文件中的Logon函数而不需要把它移到引用这个控件的aspx页面上吗

解决方案 »

  1.   

    你在页面方法里,如
    f(),在F里调用你的webcontrol里的方法,如
    private void f()
    {
    webcontrol.g();
    }
    试试看,我没试过哦.
      

  2.   

    好象  不可以哦!
    一般来说 每一个用到登录控件的页面上都实现这个Logon函数。
      

  3.   

    或者你直接在webcontrl里拖直updatepanel也行吧.
      

  4.   

    呵呵,提这个问题主要是想和大家探讨一下。Asp .Net Ajax既然可以通过指定Path来确定访问哪一个WebService,那么从理论上来说,应该也应该可以通过指定页面路径来访问任意页面上的WebMethod,本质都是客户段发起一个http请求相应服务器上页面的函数嘛。在客户段,Ajax通过PageMethods类来调用服务器页面的函数,那这个PageMethods可不可以也设一个路径指向另一个页面呢?
      

  5.   

    login.aspxpublic static object Login()
    {
      return webcontrol.logon();
    }所有的验证都用login.Login()
      

  6.   

    sq_zhuyi的想法不错,曲线救国,基本上可以解决问题了,还有没啥更正统点的方法?