Возврат значений из кода в asp.net ajax endrequest
В принципе, у меня есть asp.net ajax включил usercontrol, и теперь я хотел бы просто вернуть простое строковое значение, которое будет использоваться в некоторых js, которые я запускаю после выполнения запроса ajax.
Я возился с методом endrequest, который я уже настроил для обработки исключений, и он отлично работает. Но нет ли способа просто вернуть строковое значение?
Сначала я думал, что смогу сделать это через реакцию.Записать(); но аргументы.get_response() не любит, когда вы это делаете может ли кто - нибудь указать мне правильное направление?
Спасибо!
2 ответов:
Вы можете использовать ScriptManager.RegisterDataItem метод с Sys.Форм.PageRequestManager. Рассмотрим следующую тестовую страницу, которая при нажатии кнопки регистрирует элемент данных в диспетчере сценариев и на стороне клиента обрабатывает endrequest и получает этот элемент данных,
<%@ Page Language="C#" AutoEventWireup="true" Inherits="WebApplication1._Default" %> <script runat="server"> protected void btTest_Click(object sender, EventArgs e) { ScriptManager1.RegisterDataItem(btTest, "Your value to pass to the client"); } </script> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="upTest" runat="server"> <ContentTemplate> <asp:Button ID="btTest" runat="server" Text="Click Me" OnClick="btTest_Click" /> </ContentTemplate> </asp:UpdatePanel> </div> </form> </body> <script language="javascript" type="text/javascript"> Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); function endRequestHandler(sender, args) { var dataItems = args.get_dataItems()['<%= btTest.ClientID %>']; if (dataItems != null) alert(dataItems); } </script> </html>
Может быть, я не понимаю вашу проблему, но какое отношение usercontrol имел к этим дополнительным вызовам js ? Вы просто визуализируете этот js из пользовательского контроля ?
В любом случае, ИМО вы должны использовать ASP.NET веб-обработчик (*.ashx) или HttpHandler, чтобы вернуть строковое значение и вызвать этот обработчик с этим дополнительным js.
Comments