programing

페이지 메서드가 ASPX 페이지에 정의되지 않았습니다.

linuxpc 2023. 8. 29. 20:11
반응형

페이지 메서드가 ASPX 페이지에 정의되지 않았습니다.

한 번만 작동한 것으로 추정할 수 있는 오래된 코드를 보고 있습니다.

MyPage.aspx:

function GetCompanyList(officeId) {
    var companyList = document.getElementById('<%= CompanyDropDown.ClientID %>');
    if (companyList.length == 0)
        PageMethods.GetCompanyList(officeId, OnGetCompanyList);
    else
        EditCompany();
}

그리고:

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

코드 배경:

[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();
}

하지만 부름을 받고는PageMethods.GetCompanyList()첫 번째 스니펫에서 Chrome은 다음을 보고합니다.

페이지 메서드가 정의되지 않았습니다.

이것이 작동하지 않게 하기 위해 무엇이 변경되었는지 누가 알 수 있습니까?

참고: 비슷한 질문을 찾았지만 모두 마스터 페이지나 사용자 컨트롤에서 작동하지 않는 이 코드와 관련된 것처럼 보였는데, 여기서는 그렇지 않습니다.

EnablePageMethods 실제로 오직 a의 방법들과 상호작용합니다.Page에 해당하는 하위 클래스public,static그리고 로 간주됩니다.WebMethod.

GetCompanyList그것들 중 2개를 가지고 있고 또한 필요합니다.static.

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

그리고, 무슨 일이 일어나고 있는지 의심스럽습니다.PageMethods3개의 메서드가 모두 없는 경우 정의되지 않은 클라이언트 측입니다.

ASP를 호출할 수 있습니다.jQuery를 통한 NET AJAX 페이지 메서드는 다음과 같습니다.

$.ajax({
    type: "POST",
    url: "PageName.aspx/MethodName",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
        // Do something interesting here.
    }
});

페이지에서 라우팅을 사용하고 있을 수 있습니다.그런 다음 PageMethods를 호출한 후 실제 경로를 설정해야 합니다.

PageMethods.set_path("<%=ResolveUrl("~/YourPage.aspx")%>");
PageMethods.YourMethod(param, OnSuccess, OnError);

제가 생각하는 다른 솔루션의 한 가지 답변은 이 오류가 서버에서 발생하지만 로컬에서는 발생하지 않는 경우 빈 MyPage.aspx 자리 표시자 파일을 배치하고 이제 프로덕션 서버에서도 작동한다는 것입니다.

언급URL : https://stackoverflow.com/questions/18242334/pagemethods-is-not-defined-in-aspx-page

반응형