Включение ссылки на веб-сервис в элемент управления

#c# #.net #javascript #ajax #web-services

Вопрос:

Я написал элемент управления на C#, который переопределяет встроенный элемент управления DropDownList. Для этого мне нужен включенный ресурс javascript, который я включаю в качестве встроенного ресурса, а затем добавляю WebResource атрибут, который отлично работает.

Однако мне также нужно ссылаться на веб-сервис, который я обычно включаю в scriptmanager на странице, подобной этой

 <asp:scriptmanager id="scriptmanager" runat="server">
<Services>
<asp:ServiceReference Path="~/Path/To/Service.asmx" />
</Services>
</asp:scriptmanager>
 

Есть ли какой-либо способ заставить страницу включить эту ссылку в код элемента управления, который я создал, аналогично тому, как она включает встроенный файл javascript?

Ответ №1:

Вы можете добавить ScriptManagerProxy в код или разметку вашего элемента управления и добавить ссылку на службу через него. Настройки в ScriptManagerProxy объединяются с «реальным» ScriptManager во время компиляции.

Ответ №2:

Если вы знаете страницу, на которой находится пользовательский элемент управления, вы можете создать ((Имя страницы)this.Page).scriptmanager.Службы.Добавить() из пользовательского элемента управления

Ответ №3:

Вы можете просто добавить javascript для вызова веб-сервиса самостоятельно:

Sys.Net.WebServiceProxy.invoke(url, имя метода, useHttpGet, параметры, обратный вызов с успехом, обратный вызов с ошибкой, пользовательский контекст, время ожидания);

http://www.asp.net/AJAX/Documentation/Live/ClientReference/Sys.Net/WebServiceProxyClass/WebServiceProxyInvokeMethod.aspx

Документы предназначены для asp.net Ajax 1.0, но это тот же .net 3.5.