因为我找不到任何帮助我的解决方案,我想我问道。 我需要一个JavaScript函数,在我的代码隐藏中调用一个方法,因为我真的很新,我不明白我做错了什么。 在我的母版页(Site.Master)上,我启用了PageMethods:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
在我的页面内容中我已经放了脚本:
function reply_click(clicked_id) {
alert(clicked_id);
PageMethods.javascriptTest(clicked_id);
现在我的方法在代码隐藏中:
[WebMethod]
public void javascriptTest(int buttonID)
{
Test2.Text += buttonID + "***";
// Use the ID for DB access
}
我需要这个ID以后,当我必须在我的数据库中做东西,但我总是得到PageMethods未定义的错误,我不知道为什么:/
编辑:解决方案确实是为了使WebMethod静态,我只是做了一个解决方法,所以我可以使用我的数据库访问所需的所有细节JavaScript的:
function reply_click(clicked_id, clicked_name) {
// Schulungsdaten holen
var grid = document.getElementById("<%= SignGridView.ClientID %>");
var row = grid.rows[0];
var appointmentData = row.cells[clicked_id].innerText;
// Userdaten holen
var userID = document.getElementById("<%= UserData.ClientID %>").innerText;
PageMethods.javaScriptUserSignIn(appointmentData, userID, clicked_name, OnSucceeded, OnFailed);
location.reload();
}
function OnSucceeded(response) {
alert(response);
}
function OnFailed(error) {
alert(error);
}
代码隐藏:
[WebMethod]
public static string javaScriptUserSignIn(string appointmentData, string userID, string status)
{
string result = "";
SignIn sign = new SignIn();
result = sign.SignToTraining(appointmentData, userID, status);
return result;
}
答案 0 :(得分:3)
您的javascriptTest方法需要是静态的
试试这个:
[System.Web.Services.WebMethod]
public static void javascriptTest(int buttonID)
{
Test2.Text += buttonID + "***";
// Use the ID for DB access
}