2016-12-16 76 views
0

我正在构建一个站点,我在jQuery UI对话框中调用局部视图。在部分视图中有一个“保存”按钮,将表单上的数据提交给数据库。目前它重定向到不同的视图。我希望它改为关闭对话框。我无法正确调用该函数关闭对话框。需要关闭从MVC中的控制器操作的Jquery UI对话框5

这里是我的代码:

在查看:

<script type="text/javascript"> 
      $.ajaxSetup({ cache: false }); 
      $(document).ready(function() { 
       $(".diagSave").on("click", function (e) { 
        e.preventDefault(); 
        $("<div></div>") 
        .dialog({ 
         title: $(this).attr("data-dialog-title"), 
         modal: true, 
         width: 1000, 
         success: function() { 
         $('#diagSave').dialog('close'); 
        } 
        }) 

        .load(this.href); 
       }) 

      }); 
</script> 

在控制器:

return Json(new { success = true }, JsonRequestBehavior.AllowGet); 

能有人帮指出我怎样才能做到这一点?

+0

保存程序是否可以移动到主窗体中,以便保存按钮可以添加到原始对话框定义的选项中? – Steve

+0

你在哪里添加了这个脚本?在主视图还是部分视图? – Perdido

+0

@perdido,这是我的主要观点。 – silverbullettruck2001

回答

0

另一种方法是处理jquery中的保存点击,使用.serialize将表单集发送到您的控制器,然后关闭对话框。

var formvalues = $('#yourformparentdiv form').serialize(); 
$.ajax({ 
    url: siteRoot + 'Home/YourControllerMethod', 
    data: formvalues, 
    async: true, 
    type: "POST", 
    ... 
+0

我宁愿离开一切工作,除非从控制器关闭对话框是不可能的 – silverbullettruck2001

0

如果您需要处理关闭并保存partialview,您需要处理click事件中的关闭。

$("#partialview_savebutton").click(function(e){ 
    var $dlg = $(this).parents(".ui-dialog"); 
    //save the data 
    $dlg.dialog("close"); 
}); 

当您将内容加载到对话框中时,您需要确保此方法已被绑定。

我通常在我的对话框打开例程结束时包含这个。

if(typeof initDlg == 'function') initDlg(); 

然后在我的partialview中定义的定义的initDlg(){}中绑定我的事件处理程序并配置我需要的任何验证。

+0

控制器需要什么来触发执行关闭功能? – silverbullettruck2001

+0

没有在控制器中,但在我的答案在部分视图中的第一个代码。你需要找到对话框元素,然后调用'close' – Steve

+0

一些相关的html/js被加载到对话框中会很有帮助。 – Steve