在Sharepart 2010的Webpart中出现错误“PageMethods未定义”

时间:2012-03-29 07:51:10

标签: jquery ajax

我得到的PageMethods在我的sharepoint 2010 webpart中没有定义javascript错误。 基本上,我已经创建了显示谷歌地图的webpart。点击谷歌地图的标记后,我想调用服务器端事件。我已经实现了相同的jquery。我正在使用PageMethods来调用服务器方法。以下是我从某个博客网站获取的代码。我还在我的页面上添加了scriptmanager标记,并将EnablePageMethods属性设置为true。

脚本块:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript">
    $(document).ready(function () {
        // Initialization                            
        $("#ajax_loading_image").hide();
        // mousemove event
        $().mousemove(function (e) {
            window.status = e.pageX + ', ' + e.pageY;
        });
        // hook up the click event            
        $("#execute_page_method").click(function () {

            $("#message").text("I'm working...");
            $("#ajax_loading_image").show("fast");
            $("#execute_page_method").hide("fast");

            // Call some page method...
            PageMethods.ProperMethodName("string", function (result, userContext, methodName) {

                $("#ajax_loading_image").hide("slow");
                $("#execute_page_method").show("slow");

                if (result.Success == true) {
                    alert("true");
                    $("body").css("background", "#CAFFD8");
                }
                else {
                    $("body").css("background", "#CAFFFF");
                }

                $("#message").text("This took me " + result.Time + " milliseconds...  ");

            });
            return false;
        });
    });
</script>

<div>
    <a id="execute_page_method" href="http://jquery.com/">Click!</a>
</div>

Code Behind events:
public class MethodReturnedValue
        {
            public int Time { get; set; }
            public bool Success { get; set; }
        }

        [WebMethod(true)]
        public static MethodReturnedValue ProperMethodName(string param)
        {
            Random random = new Random();
            MethodReturnedValue retVal = new MethodReturnedValue();
            retVal.Time = random.Next(5000);
            Thread.Sleep(retVal.Time);
            if (random.Next() % 2 == 0)
            {
                retVal.Success = true; ;
            }
            else
            {
                retVal.Success = false;
            }
            return retVal;
        }

相同的代码在我的asp.net应用程序中工作正常,而不是在我的sharepoint应用程序中工作。 任何人都可以帮助我。

1 个答案:

答案 0 :(得分:0)

对于Page方法,Web方法需要位于.aspx.cs文件中。

在SharePoint中(如果使用发布页面布局),请在页面的cs中编写Web方法。

但是,如果您使用的是Web部件页面布局,那么它将无法正常工作。