Возврат значений из кода в asp.net ajax endrequest



В принципе, у меня есть asp.net ajax включил usercontrol, и теперь я хотел бы просто вернуть простое строковое значение, которое будет использоваться в некоторых js, которые я запускаю после выполнения запроса ajax.



Я возился с методом endrequest, который я уже настроил для обработки исключений, и он отлично работает. Но нет ли способа просто вернуть строковое значение?



Сначала я думал, что смогу сделать это через реакцию.Записать(); но аргументы.get_response() не любит, когда вы это делаете может ли кто - нибудь указать мне правильное направление?



Спасибо!

613   2  

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

    Ничего не найдено.