문제

응용 프로그램에 ASP.NET 페이지 방법을 사용하고 있습니다. 모든 것이 매력처럼 작동하지만 페이지에서 내 페이지 메소드를 인라인으로 생성하는 것을 원하지 않습니다.

  1. Webresource.axd 파일 또는 이와 유사한 것으로 옮길 수있는 방법이 있습니까? 나는 생성 된 하나를 페이지에서 멀리 이동하기 위해 내 자신의 프록시를 쓰고 싶지 않습니다.

  2. 기본 페이지에 여러 페이지 메소드가 있습니다. 모든 페이지의 모든 메소드를 사용하지 않으므로 특정 페이지에 어떤 메소드에 포함시 원하는지 스크립트 관리자에게 알리는 방법이 있습니까?

도움이 되었습니까?

해결책

기본 페이지에 여러 페이지 메소드가 있습니다. 모든 페이지의 모든 메소드를 사용하지 않으므로 특정 페이지에 어떤 메소드에 포함시 원하는지 스크립트 관리자에게 알리는 방법이 있습니까?

이것이 가능한지 확실하지 않습니다. 그러나 내가 할 일은 기본 페이지가 아닌 실제 페이지 자체의 특정 페이지에 특정한 메소드를 이동하는 것입니다.

할 수있는 것은 JavaScript에서 서버 측로 로직에 액세스하기 위해 페이지 메소드를 사용하는 대신 ASMX WebServices를 사용하는 것입니다.

[System.Web.Script.Services.ScriptService]
public class MyWebService
{

   [WebMethod]
   public string GetData(int id)
   {
      //do some work
      //return result
   }

}

ASPX 또는 ASCX 코드에서 다음을 수행합니다.

function someFunction(){
   WebServiceNamespace.MyWebService.GetData(123, onSuccessCallback, onErrorCallback);
}

function onSuccessCallback(result){
   //process your result. Usually it is encoded as JSON string
   //Sys.Serialization.JavaScriptSerializer.deserialize(...) can be used for deserializing
}

function onErrorCallback(){
   //display some info
}

웹 서비스의 반환 객체가 어떻게 인코딩되는지 살펴 봐야합니다. 일반적으로 JSON으로 인코딩됩니다. 나는 이것이 당신의 web.config에 명시 적으로 지정되어야하는지 기억하지 못한다.

//편집하다:
내가 잊은 것. 스크립트 및 웹 서비스를 등록하려면 ASP.NET ScriptManager를 사용할 수 있습니다.

<asp:ScriptManager ID="ScriptManager1" runat="server">
   <Scripts>
      <asp:ScriptReference Path="~/scripts/WebServiceScripts.js" />
   </Scripts>
   <Services>
      <asp:ServiceReference Path="~/Services/MyWebService.asmx" />
   </Services>
</asp:ScriptManager>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top