我在CreateTicket.aspx.cs中有一个包含此方法的页面:
[WebMethod()] public static string Categories() { var business = new CategoryBusiness(); var categories = business.ListRootCategories(); return categories.Json(); }
和页面上的javascript/jquery代码(同一页面,.aspx):
function LoadRootCategories() { PageMethod("CreateTicket.aspx", "Categories", [], LoadCategoriesSucceded, LoadCategoriesFailed); } function PageMethod(page, fn, paramArray, successFn, errorFn) { //Create list of parameters in the form: //{"paramName1":"paramValue1","paramName2":"paramValue2"} var paramList = ''; if (paramArray.length > 0) { for (var i=0; i0) paramList += ','; paramList += '"' + paramArray[i] + '":"' + paramArray[i+1] + '"'; } } paramList = '{' + paramList + '}'; //Call the page method $.ajax({ type: "POST", url: page + "/" + fn, contentType: "application/json; charset=utf-8", data: paramList, dataType: "json", success: successFn, error: errorFn }); }
在firebug上运行它,我在控制台上收到以下错误:
500 Internal Server Error Unknown web method Categories. [ArgumentException: Unknown web method Categories. Parameter name: methodName] System.Web.Script.Services.WebServiceData.GetMethodData(String methodName) +517489 System.Web.Handlers.ScriptModule.OnPostAcquireRequestState(Object sender, EventArgs eventArgs) +168 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
为什么会这样?
我解决了这个问题.
发生了什么事?有点蠢(像往常一样):
CreateTicket.aspx页面声明中缺少"Inherits"属性,因此CreateTicket.aspx.cs未绑定为部分类,即使使用CodeBehind属性也是如此.