将数据从mvc对话框发布到控制器的最简单方法是什么?

时间:2010-04-23 11:25:18

标签: model-view-controller

如何将对话框中的数据发送到控制器?模型绑定?

我能举个例子吗?

1 个答案:

答案 0 :(得分:1)

我在此基于您之前对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() %>
<% } %>