PageMethods is not Defined in ASPX Page

ajax, asp.net, javascript, pagemethods

Solution

`EnablePageMethods` actually only interacts with methods of a `Page` subclass that are `public`, `static`, and attributed as a `WebMethod`.

`GetCompanyList` has 2 of those and just also needs to be `static`.

[System.Web.Services.WebMethod()]
[System.Web.Script.Services.ScriptMethod()]
public static IEnumerable<CompanyMinimum> GetCompanyList(int officeId) {
    // ...
}

And, I suspect what's happening is that it's leaving `PageMethods` undefined client-side if it doesn't find any methods that have all 3.

Problem

I'm looking at some old code that I can only assume worked at one time. MyPage.aspx: ``` function GetCompanyList(officeId) { var companyList = document.getElementById('<%= CompanyDropDown.ClientID %>'); if (companyList.length == 0) PageMethods.GetCompanyList(officeId, OnGetCompanyList); else EditCompany(); } ``` And: ``` <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" /> ``` Code behind: ``` [System.Web.Services.WebMethod()] [System.Web.Script.Services.ScriptMethod()] public IEnumerable<CompanyMinimum> GetCompanyList(int officeId) { return ( from c in Repository.Query<Company>() where !c.IsDeleted && c.TypeEnumIndex == (short)CompanyRelationshipType.Hotel select new CompanyMinimum() { id = c.Id, desc = c.Description } ).ToList(); } ``` But at the call to `PageMethods.GetCompanyList()` in the first snippet, Chrome reports: PageMethods is not defined Can anyone see what has changed to prevent this from working? Note: I've found similar questions but they all seemed related to this code not working in master pages or user controls, which isn't the case here.

Original source