Переместите ASP.NET Page Methods Прокси со страницы - PullRequest
0 голосов
/ 30 июля 2009

Я использую методы страниц ASP.NET для своего приложения. Все работает как шарм, но я не хочу, чтобы мои методы страницы генерировались на странице.

  1. Есть ли способ переместить их в файл WebResource.axd или что-то подобное. Я действительно не хочу писать свой собственный прокси, просто чтобы сместить сгенерированный прокси со страницы.

  2. У меня есть несколько методов страницы на моей базовой странице. Есть ли способ сообщить диспетчеру сценариев, какие методы я хочу включить для конкретной страницы, поскольку я не использую все методы на всех страницах?

1 Ответ

2 голосов
/ 24 августа 2009

У меня есть несколько методов страницы в моем базовая страница Есть ли способ рассказать менеджер сценариев, какие методы я хочу включены для конкретной страницы, как я я не использую все методы на всех страницах?

Я не уверен, возможно ли это. Однако я хотел бы переместить ваши методы, относящиеся к определенной странице, на саму страницу, а не на базовую страницу.

Что вы можете сделать, это использовать asmx webservices вместо использования методов страницы для доступа к серверной логике из JavaScript.

[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>
...