Как отправить на сервер с помощью JQuery.UI Dialog и ASP.Net? - PullRequest
4 голосов
/ 27 января 2010

Я ищу способ отправки информации, захваченной в диалоге JQuery, на сервер в ASP.Net. Первоначально я думал, что это будет работать со «скрытой» кнопкой asp, но, похоже, щелчок не отправляет форму. Вот код, который у меня есть:

<script type="text/javascript">
  jQuery(document).ready(function() {

    var dlg = jQuery("#dialog").dialog({
            bgiframe: true,
            autoOpen: false,
            height: 150,
            width: 300, 
            modal: true,
            buttons: {
            "Add": function() {
                    var btn = document.getElementById("<%=btnAdd.ClientID %>");
                    if (btn) btn.click();
                    $(this).dialog("close");
                }
            }
        });

        $("#dialog").parent().appendTo("#dialog_target");

  });
</script>

<div id="hidden" style="visibility:hidden" >

    <!-- Hidden button that actually triggers server add -->
<asp:Button ID="btnAdd" 
            runat="server"
            style="display:none"
            OnClick="btnAdd_Click"  />

<!-- Hidden Delete Dialog -->
<div id="dialog" title="New Additional Skill">
        <label>Additional Skill Name:</label>
        <asp:TextBox ID="_txtNewSkillName" runat="server" />
</div>

Есть указатели?

Ответы [ 5 ]

3 голосов
/ 17 апреля 2010

Ваш подход со скрытой кнопкой хорош, но ваши элементы могут все еще не быть внутри <form>, когда вы отправляете.

Чтобы решить эту проблему, просто поместите диалоговое окно внутри <form>, чтобы убедиться, что оно отправляется ... в противном случае кнопка, которую вы нажимаете, не установлена ​​в POST для сервера, и событие выиграло ' т огонь.

Вы сделаете это, настроив свой .appendTo() вызов, например:

$("#dialog").parent().appendTo("form");

Поскольку вы имеете дело только с 1 <form>, это все, что вам нужно:)

0 голосов
/ 11 марта 2010

попробуйте это:

__ doPostBack ( 'btnAdd', 'OnClick');

Это имитирует событие нажатия кнопки и будет отправлять обратно на сервер. В событии загрузки страницы используйте это, чтобы установить ссылку:

Page.GetPostBackEventReference (btnAdd)

Надеюсь, это поможет.

0 голосов
/ 17 февраля 2010

Я не уверен, но в FireFox элементы формы украшены дисплеем: ни один не будет включен в данные POST на сервере. Поэтому я думаю, что ваша форма отправляется, но ASP.NET не будет выполнять вашу функцию btnAdd_Click на стороне сервера, поскольку она не может найти кнопку в данных POST.

Попробуйте изменить отображение: нет на

visibility:hidden;

или

position:absolute;
top:-999px;
0 голосов
/ 17 февраля 2010

Используйте ClientScript.GetPostBackEventReference вместо настройки вызова на btn.click():

buttons: {
    "Add": function() {
        <%= ClientScript.GetPostBackEventReference(
                new PostBackOptions(this.btnAdd))%>;
    }
}
0 голосов
/ 27 января 2010

Добавьте форму в диалоговое окно, затем отправьте ее с помощью JavaScript при закрытии диалогового окна или нажатии кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...