Переместить ASP.NET Методы прокси-сервера со страницы
-
05-07-2019 - |
Вопрос
Я использую методы страницы ASP.NET для своего приложения.Все работает как шарм, но я не хочу, чтобы методы моей страницы генерировались встроенно на странице.
Есть ли какой-нибудь способ переместить их в файл WebResource.axd или что-то подобное?На самом деле я не хочу писать свой собственный прокси-сервер только для того, чтобы переместить сгенерированный прокси-сервер со страницы.
У меня есть несколько методов страницы на моей базовой странице.Есть ли способ сообщить менеджеру скриптов, какие методы я хочу включить для конкретной страницы, поскольку я не использую все методы на всех страницах?
Решение
У меня есть несколько методов в моем база страницы.Есть ли способ сообщить менеджеру сценариев, какие методы я хочу включить для конкретной страницы, поскольку я использую не все методы на всех страницах?
Я не уверен, возможно ли это.Однако что бы я тогда сделал, так это переместил ваши методы, специфичные для определенной страницы, на саму фактическую страницу, а не на базовую страницу.
Что вы могли бы сделать, так это использовать веб-сервисы 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>