您好我有以下页面方法,但它似乎没有工作,我尝试调试它,它没有达到方法。这是我的方法的样子;
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],因为它是由脚本调用的。感谢您的所有建议。
答案 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"/>