나는 나의 기본 페이지에 여러 페이지 방법이있다. 스크립트 관리자에게 내가 원하는 방법을 알려주는 방법이 있나요? 은 모든 페이지에서 모든 방법을 사용하지 않으므로 특정 페이지에 대해 이 포함되어 있습니까?
이것이 가능한지 확실하지 않습니다. 그러나 내가해야 할 일은 기본 페이지가 아닌 실제 페이지 자체에서 특정 페이지에 특정한 메소드를 이동시키는 것입니다.
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>
문제는 사용자의 설정에 따라 페이지에있는 컨트롤에 페이지 메서드가 필요하다는 것입니다. 나는 두 곳에서 리팩터링을해야하기 때문에 프록시 작성을 피하기를 바랬다. 너무 많은 메소드를 작성하면 웹 서비스로 이동하게 될 것입니다. 또한 인증을 처리해야합니다. PageMethods는 컨트롤에 넣기를 원한다는 것을 제외하고는 저에게 완벽했습니다.하지만 필자는 웹 서비스를 작성할 것입니다. – Stilgar
나는 거의 같은 문제가있었습니다. 나는 또한 페이지 자체가 아닌 UserControls에서 그러한 기능을 원했다. 하지만 불가능하기 때문에 모든 것을 웹 서비스로 옮겼습니다. 결국 실제로 그렇게 나쁘지는 않습니다. – Juri