调用Pagemethod

时间:2011-06-20 16:11:49

标签: c# jquery asp.net

您好我有以下页面方法,但它似乎没有工作,我尝试调试它,它没有达到方法。这是我的方法的样子;

function InsertStatus() {

  var fStatus = document.getElementById('<%=txtStatus.ClientID %>').value;
  PageMethods.InsertStatusUpdate(fStatus, onSucess, onError);

  function onSucess(result) {
      alert(result);
  }

  function onError(result) {
      alert('Cannot process your request at the moment, please try later.');
  }
}

我的代码隐藏;

    [WebMethod]
    public static string InsertStatusUpdate(string fStatus)
    {
        string Result = "";
        int intUserID = -1;

        if (String.IsNullOrEmpty(HttpContext.Current.User.Identity.Name))
          HttpContext.Current.Response.Redirect("/login");
        else
            intUserID = Convert.ToInt32(HttpContext.Current.User.Identity.Name);

        if (string.IsNullOrEmpty(fStatus))
            return Result = "Please enter a status";
        else
        {

            //send data back to database

            return Result = "Done";

        }

    }

当我点击我的按钮时,它会直接通过onError方法。谁能看到我做错了什么? 我发现问题我需要在方法上方使用[System.Web.Script.Services.ScriptService],因为它是由脚本调用的。感谢您的所有建议。

2 个答案:

答案 0 :(得分:1)

如果我猜,我会专注于此:

 intUserID = Convert.ToInt32(HttpContext.Current.User.Identity.Name); 

解决此问题的最佳方法是设置断点并开始遍历代码。当您运行一行并重定向到错误页面时,您已找到问题所在。

我选择该行的原因是用户是一个字符串。现在,它可能是您的用户是数字,但它也可能包括域用户==“mydomain / 12345”,这不是一个整数,即使该字符串的用户部分是。

答案 1 :(得分:1)

据我所知,你不能Response.Redirect中的PageMethod

返回重定向网址的字符串,然后使用JavaScript document.location.href来处理重定向。


编辑:我刚刚看到您尝试调试并且方法未被点击:确保您的ScriptManager EnablePageMethods设置为true

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"/>