Asp.net mvc MVC模式弹出窗口提交

Asp.net mvc MVC模式弹出窗口提交,asp.net-mvc,popup,jquery-post,Asp.net Mvc,Popup,Jquery Post,这是一个独特的问题,我对MVC还是相当陌生的,所以我会尽我所能解释它。我有一个带有第三方网格的页面,其中每一行都是一个“Company”对象。我的视图模型是一个CompanyManager对象,搜索参数作为字段,列表填充网格。用户可以选择一行进行编辑,这将弹出一个弹出窗口。网格外的按钮也会打开相同的弹出窗口以创建新记录 弹出窗口的内容位于局部视图中,AddEdit,其模型为“Company”对象。除了其他字段外,还有另一个第三方网格,其中“联系人”作为记录。从“联系人”的第三方网格中,我可以序列

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

弹出窗口的内容位于局部视图中,
AddEdit
,其模型为“Company”对象。除了其他字段外,还有另一个第三方网格,其中“联系人”作为记录。从“联系人”的第三方网格中,我可以序列化记录并在提交时传递它们


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

如果您使用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
                    }
                });
您应该在“Result”中获得JSON结果。请注意,数据类型是“json”,如果它是“html”,则它希望返回html。结果将被放入success函数调用中的变量result中,然后您可以使用该变量执行任何操作,并确定是否需要关闭模式


另外,请确保在控制器中确实接收到ajax调用-请求。IsAjaxRequest()

您可以通过使用常规按钮来提交表单,就像在任何页面表单上一样。设置按钮的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以允许单击事件,该事件将提交表单并关闭窗口。

I正在执行$.post,这是该操作的简写。(). 我也是JQuery的新手。我将代码恢复到我认为的状态,它工作得非常好。也许我没有什么恰到好处的东西。但我认为发生的事情正是您提到的:尽管我使用了.post,但数据类型是一个可选参数。。。我忘了把它放进去。尽管这次我还没有填好,但还是成功了。但它确实符合我的症状。所以我现在提供了数据类型,它仍然有效!。。。。。。根据链接,如果您不提供数据类型,它会做出有根据的猜测。所以我猜前几天,出于某种原因,它假设为HTML,而今天,它假设为JSON。