PageMethods不使用VS2013 Web应用程序

时间:2016-11-12 17:21:17

标签: javascript c# asp.net scriptmanager pagemethods

我花了一整天的时间来解决这个错误并阅读了几乎每篇文章,并尝试了我发现的每一个提示,但仍然无法使其工作。

请注意:在ScriptManager中, EnablePageMethod = true,方法是公共的和静态的,并使用[WebMethods]

进行修饰

相同的编码与VS2010完美配合,在VS2013中使用空项目,但在使用新项目时 - >网络 - >网页表单输出附在此处供您参考。 Error OutPut

  

这是我的代码。

代码背后:

[System.Web.Services.WebMethod]
        public static string GetCurrentTime(string name)
        {
            return "Hello " + name + Environment.NewLine + "The Current Time is: "
                + DateTime.Now.ToString();
        }

JavaScript的:

<script type="text/javascript">
        function ShowCurrentTime() {
            PageMethods.GetCurrentTime(document.getElementById("<%=txtUserName.ClientID%>").value, OnSuccess);
           }
           function OnSuccess(response, userContext, methodName) {
               alert(response);
           }
    </script>

HTML:

<div>
        Your Name : 
            <asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
        <input id="btnGetTime" type="button" value="Show Current Time" onclick="ShowCurrentTime()" />
    </div>

3 个答案:

答案 0 :(得分:0)

尝试将[System.Web.Services.WebMethod][System.Web.Script.Services.ScriptMethod]添加到服务器端GetCurrentTime方法。

还要确保您的脚本管理器具有EnablePageMethods="True"。您的问题表明您设置错误拼写的 EnablePageMethod = true (应该是复数形式)。

答案 1 :(得分:0)

您需要使Click事件处理程序失败,以防止回发/页面提交。

只需从您的javascript函数返回false:

function ShowCurrentTime() {
    PageMethods.GetCurrentTime(document.getElementById("<%=txtUserName.ClientID%>").value, OnSuccess);
    return false; // added
}

答案 2 :(得分:0)

从客户端调用PageMethod时,您必须确保该按钮不会回发。使用您当前的标记,它将回发并导致意外的效果。

您应该使用以下标记作为按钮,因此它永远不会回发。然后调用pagemethod应该工作。在下面的标记中,按钮单击事件返回一个错误值,因此页面永远不会被提交,即返回。

此外,最好全部发布您的页面标记,因为标记可能存在问题。

<input id="btnGetTime" type="button" value="Show Current Time"
                    onclick="ShowCurrentTime();return false;" />