当前位置:编程学习 > C#/ASP.NET >>

100分了,我想问一个关于在ajax中调用WebMethod和PageMethod的问题!

现在我需要在调用WebMethod和PageMethod

现在调用WebMethod成功了,但是调用PageMethod不成功,提示找不到PageMethod

已经做的操作如下

ScriptManager中添加了 EnablePageMethods="True"

在方法前添加了[WebMethod](VB.NET 为 <WebMethod()> _)

添加了[System.Web.Script.Services.ScriptService] (VB.NET 为<System.Web.Script.Services.ScriptService()> _)

在javascript中就是找不到PageMethod

后台看到如果要调用Page中的方法要申明为Static(VB.NET为 Shared)

但是我加上了以后出现了好多    "没有类的显式实例,就无法从共享方法或共享成员初始值设定项中引用该类的实例成员。”  

比如需要调用的方法里有对页面中Runat="server" 控件的操作,添加了Static声明后就提示了那句话,也不能执行了

谁帮我解决一下!!!谢谢



  --------------------编程问答-------------------- js里面要调用的方法,应该是public类型的,你的是吗? --------------------编程问答-------------------- 小例子:


前台代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="AjaxFrame.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
    <script type="text/javascript">
    
      var pa1 = "Time is" ;
      function go() {
        
            PageMethods.cs(pa1,js);
      }
      
      function js(cs)
      {
        alert(cs);
      }
        

    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <input type="button" onclick="go();" value="submits" />
        <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
    </div>
    </form>
</body>
</html>


-----------------------------------------------------------------------------------------------------------------------
后台代码:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace AjaxFrame
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        [System.Web.Services.WebMethod]

        public static string cs(string pa1)
        {
            return pa1+DateTime.Now.ToString();
        }
    }
} --------------------编程问答-------------------- 高手幫我看一下這個問題怎解決
http://topic.csdn.net/u/20071024/21/2368ffaa-9a54-48f3-8f86-95ad2e0138bd.html --------------------编程问答-------------------- 非常感谢这个帖子,终于知道pagemethod如何调用了。 --------------------编程问答-------------------- 接分 --------------------编程问答-------------------- 正常模式运行的Page,是一个Page实例,所有控件都以实例形式存在于Page中。PageMethod必须是static的,因此执行时并没有Page实例,没有任何控件,只能做WebService那样的纯粹数据处理,不能使用Page模型。 --------------------编程问答-------------------- 帮顶
--------------------编程问答-------------------- 先顶一个再说 --------------------编程问答-------------------- 8错,留个脚印 --------------------编程问答-------------------- VS的问题,用VS.NET2008正常 --------------------编程问答-------------------- 我记得微软有这样的demo!! --------------------编程问答-------------------- 顶一哈   解决了就好。。。。 --------------------编程问答-------------------- 关注... --------------------编程问答-------------------- Mark --------------------编程问答-------------------- 我也感谢ayooxi(路人),纠结了半天的问题终于找到答案了 --------------------编程问答-------------------- 顶顶~ --------------------编程问答-------------------- PageMethods方法是在页面或者js文件中调用当前页面后台代码的方法,这种方法有以下几个步骤,

一、在页面上添加<asp:ScriptManagerProxy></asp:ScriptManagerProxy>控件,如果出现PageMethods未定义时可在页面上或者js文件中引入以下代码即可

var PageMethods = function() {
PageMethods.initializeBase(this);
this._timeout = 0;
this._userContext = null;
this._succeeded = null;
this._failed = null;
}

二、需调用的后台方法必须是public 和static的,同时为方法添加

[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = false)]属性,

使用方法PageMethods.方法名(参数,回调函数)。
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,