2009-07-30 2 views
0

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

  1. WebResource.axd 파일 또는 이와 유사한 파일로 이동할 수있는 방법이 있습니까? 내가 만든 페이지를 페이지에서 멀리 이동시키기 위해 내 자신의 프록시를 쓰고 싶지는 않습니다.

  2. 내 기본 페이지에 여러 페이지 메소드가 있습니다. 모든 페이지에서 모든 메소드를 사용하지 않기 때문에 특정 페이지에 대해 원하는 메소드를 스크립트 관리자에게 알려줄 수 있습니까?

답변

2

나는 나의 기본 페이지에 여러 페이지 방법이있다. 스크립트 관리자에게 내가 원하는 방법을 알려주는 방법이 있나요? 은 모든 페이지에서 모든 방법을 사용하지 않으므로 특정 페이지에 대해 이 포함되어 있습니까?

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

JavaScript에서 서버 측 로직에 액세스하기 위해 페이지 메소드를 사용하는 대신 asmx webservices를 사용할 수 있습니다. 당신의 영문 또는 ASCX 코드에서

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

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

} 

당신은 당신은 당신의 웹 서비스의 반환 객체가 인코딩 방법에보고해야

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> 
+0

문제는 사용자의 설정에 따라 페이지에있는 컨트롤에 페이지 메서드가 필요하다는 것입니다. 나는 두 곳에서 리팩터링을해야하기 때문에 프록시 작성을 피하기를 바랬다. 너무 많은 메소드를 작성하면 웹 서비스로 이동하게 될 것입니다. 또한 인증을 처리해야합니다. PageMethods는 컨트롤에 넣기를 원한다는 것을 제외하고는 저에게 완벽했습니다.하지만 필자는 웹 서비스를 작성할 것입니다. – Stilgar

+0

나는 거의 같은 문제가있었습니다. 나는 또한 페이지 자체가 아닌 UserControls에서 그러한 기능을 원했다. 하지만 불가능하기 때문에 모든 것을 웹 서비스로 옮겼습니다. 결국 실제로 그렇게 나쁘지는 않습니다. – Juri

관련 문제