2012-08-22 40 views
0

这是一个独特的问题,我对MVC还是比较新的,所以我会尽我所能解释它。我有一个带有第三方网格的页面,其中每一行都是“公司”对象。我的视图模型是一个CompanyManager对象,搜索参数作为字段和列表填充网格。用户可以选择一行进行编辑,这会弹出一个窗口。网格外的按钮也会打开相同的弹出窗口以创建新记录。MVC模式弹出提交

弹出窗口的内容在局部视图中,AddEdit,其模型是“公司”对象。与其他领域一样,还有另一个以“联系人”作为记录的第三方网格。从“联系人”的第三方网格中,我可以序列化记录并在提交时传递它们。

我的问题在于提交模式弹出窗口,该窗口在成功时关闭,并在公司模型(或网格中的任何联系人)未通过验证时保持打开状态。提交提交的最佳方式是什么?目前,我有一个调用JavaScript函数的按钮。在这个函数中,我试过了jquery $.submit,但是由于表单发布到Index,无论如何都会关闭弹出窗口。我也尝试过$.post发布到Ajax调用,但是我在控制器中返回了一个JSON结果,但没有像我期望的那样工作 - 它只是将JSON输出为HTML。

回答

1

如果你喜欢这款与jQuery你的Ajax调用:

   $.ajax({ 
        type: 'POST', 
        dataType: 'json', 
        url: '/url/', //url your posting to 
        data: $('#form-addedit').serialize(), //serialize the data in your form 
        success: function (result) { 

         //hide modal 
        } 
       }); 

你应该得到的 '结果' 的JSON结果。注意,dataType表示'json',如果它是'html',它会希望返回html。结果将被放入成功函数调用的变量结果中,然后您可以对变量进行所需的操作,然后确定是否需要关闭模式。

此外,还要确保在你的控制器,你确实收到一个Ajax调用 - Request.IsAjaxRequest()

+0

我在做$ .post,这是一个简写。 (http://api.jquery.com/jQuery.post/)。我也是JQuery的新手。我恢复了我的代码,回到了我以前的想法,并且完美运行。也许我没有正确的东西。但是我认为发生的事情正是你所说的:虽然我使用.post,但数据类型是一个可选参数......我忽略了放入它。尽管这次我仍然没有填充它,工作。但它肯定符合我的症状。因此,我现在提供数据类型,它仍然有效!... – JoeSharp

+0

...根据链接,如果您不提供数据类型,它会进行有根据的猜测。所以我猜,前些天,由于某种原因,它假设HTML,今天,它假定了JSON。 – JoeSharp

0

可以由具有普通按钮提交表单,就像你会在任何这样做页面表单。设置按钮的ID,让我们说'提交'。 然后用jQuery和.click函数验证表单。东西沿线

$("#Submit").click(function() { 
       var value = $("#your_field").val(); 
       if (/*check for invalid condition*/) { 
        $("#Error_message").show(); 
        return false; 
       return true; 
      }); 

这应该检查您需要验证每个字段的值。如果验证失败,则显示用户和错误消息并返回false。这可以防止执行单击事件(表单提交)。如果验证检查通过,则返回true以允许将提交表单并关闭窗口的单击事件。