javascript - PageMethods 未定义,添加静态会破坏它

标签 javascript c# asp.net

我正在开发一个 ASP.Net 应用程序,在使用 JavaScript 调用后台代码中的函数时遇到了一些麻烦。

这是我尝试运行的 JavaScript 函数:

PageMethods.EditRecord($(this).data("row-id"));

这是我的函数背后的代码:

public void EditRecord(string logID)
{
    lblLogID.Text = logID;

    ClientScript.RegisterStartupScript(GetType(), "Show", "<script> $('#edit').modal('toggle');</script>");
}

如果我像这样运行它,我会收到以下错误:

Uncaught ReferenceError: PageMethods is not defined

我做了一些阅读,意识到我应该将 public void EditRecord(string logID) 更改为 public static void EditRecord(string logID)

不幸的是,当我尝试这样做时,lblLogIDClientScript 给我带来了以下错误的麻烦:

An object reference is required for the non-static, method, or property...

如何解决这个问题,使用 JavaScript 运行我的代码隐藏方法,而不存在所有这些缺点?

最佳答案

您需要使用成功回调函数。

在你的脚本中,

PageMethods.EditRecord($(this).data("row-id"), onSuccess);

function onSuccess(logId) { $("#"+"<%=lblLogId.ClientID%>").html(logId); }

在您的 aspx.cs 中,

[WebMethod] public static string EditRecord(string logID) { return logID; }

通过移动设备回答。

希望这可以帮助您实现。

注意:它必须是静态的。您不能在静态方法中使用 ASP.net 控件。您所能做的就是从方法中返回您想要的任何内容并在 JavaScript 中使用它。

关于javascript - PageMethods 未定义,添加静态会破坏它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42717843/

相关文章:

c# - Signalr 2.2.0 私有(private)消息传递

c# - 在 Windows 窗体中以编程方式添加新的用户控件

asp.net - 对于匿名用户,Cache-Control/max-age 始终设置为 0

javascript - .toggle() 在 figcaption 上不起作用

javascript - 如何简化 JavaScript/ECMAScript 数组文字的生成?

javascript - 返回 $.getJSON 函数的结果

javascript - 导航栏和整页 slider

c# - 事件源未记录

c# - 如何从 ASP.NET 4.0 Web 应用程序中禁用/删除 WebPageHttpModule?

c# - 尝试使用 Entity Framework 从数据库下载大文件时出错