【问题标题】:PageMethods Not Working with VS2013 web applicationPageMethods 不适用于 VS2013 Web 应用程序
【发布时间】:2016-11-12 17:21:16
【问题描述】:

我整天都在与这个错误作斗争,几乎阅读了每一篇文章,尝试了我发现的每一个提示,但仍然无法让它发挥作用。

请注意:ScriptManager 内部的EnablePageMethod=true,方法是公共的和静态的,并用[WebMethods]装饰

相同的编码在 VS2010 和 VS2013 中的空项目上都可以完美运行,但是当与 New Project -> web -> web forms 一起使用时,输出附在此处供您参考。

这是我的代码。

代码隐藏:

[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>

【问题讨论】:

  • 您可以粘贴您正在使用的页面的代码前面吗?我的意思是您页面的完整标记。

标签: javascript c# asp.net scriptmanager pagemethods


【解决方案1】:

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

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

【讨论】:

  • 尝试打开浏览器开发者工具,查看控制台记录了哪些错误。将记录的错误消息添加到您的问题中确实会有所帮助。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

    您必须确保从客户端调用 PageMethod 时按钮不会回发。使用您当前的标记,它会回发并产生意想不到的效果。

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

    另外,最好是完整发布页面标记,因为标记可能存在问题。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多