Самый простой способ опубликовать данные из диалога MVC к контроллеру? - PullRequest
0 голосов
/ 23 апреля 2010

Как я могу отправить данные из диалогового окна на контроллер? Обвязка модели?

Можно мне пример, пожалуйста?

1 Ответ

1 голос
/ 23 апреля 2010

Я делаю некоторые предположения на основе ваших предыдущих вопросов, которые вас интересуют в ASP.NET MVC и используют диалоговые окна jQuery UI. Кроме того, я предполагаю, что вы хотите, чтобы данные были отправлены без перезагрузки страницы - то есть диалоговое окно должно быть закрыто и вернуть вас обратно на исходную страницу.

Самый простой способ - создать форму в диалоговом окне и отправить ее через AJAX. Я хотел бы предложить, чтобы у вас был диалог, заполненный действием контроллера, который загружает частичное представление. Это упростит создание разметки для диалога. Присвойте области содержимого диалога класс, который будет легко найти после создания диалогового окна, а затем в обработчике открытия диалогового окна замените HTML-код внутри области содержимого через загрузку в действие контроллера. Используйте кнопки в диалоговом окне для отправки формы.

 $(function() {
    $('.someSelector').click( function() {
        $('<div title="Update Contacts"><p class="dialog-content"></p></div>').dialog({
            autoOpen: true,
            modal: true,
            open: function() {
                 $(this).find('.dialog-content')
                        .load( '<%= Url.Action( "show", "contact", new { id = Model.UserID } ) %>',
                              function() {
                                 $(this).find('form').submit( function() {
                                       return false;
                                 }
                              }
                         );
            }
            buttons: function() {
                'Update': function() {
                             var $this = $(this);
                             var form = $this.find('form');
                             $.post( form.attr('action'), form.serialize(), function(){
                                   $this.dialog('destroy');
                             });
                           },
                'Cancel': function() {
                             $(this).dialog('destroy');
                          }       
            }
        });
    });
});

Частичный вид

<% using (Html.BeginForm( "update", "contact", null, FormMethod.Post, new { id = "contact-form" } )) { %>
   <%= Html.EditorForModel() %>
<% } %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...