Переместить ASP.NET Методы прокси-сервера со страницы

StackOverflow https://stackoverflow.com/questions/1204028

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

Что вы могли бы сделать, так это использовать веб-сервисы asmx вместо использования методов страницы для доступа к серверной логике из 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top