我正在开发一个 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)
。
不幸的是,当我尝试这样做时,lblLogID
和 ClientScript
给我带来了以下错误的麻烦:
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/