这是一个独特的问题,我仍然是MVC的新手,所以我会尽力解释它。我有一个带有第三方网格的页面,其中每一行都是“公司”对象。我的视图模型是CompanyManager
对象,搜索参数为字段,列表用于填充网格。用户可以选择一行进行编辑,从而弹出一个弹出窗口。网格外部的按钮也会打开相同的弹出窗口以创建新记录。
弹出窗口的内容位于部分视图AddEdit
中,其模型为“公司”对象。与其他字段一起,还有另一个第三方网格,其中“联系人”作为记录。在“联系人”的第三方网格中,我可以序列化记录并在提交时传递它们。
我的问题在于提交模态弹出窗口,该窗口弹出窗口应该在成功时关闭并在公司模型(或网格中的任何联系人)验证失败时保持打开状态。进行提交的最佳方式是什么?目前,我有一个调用JavaScript函数的按钮。在这个函数中,我尝试了jquery $.submit
,但由于表单发布到Index
,无论如何都会关闭弹出窗口。我也尝试$.post
发布到Ajax调用,但我在控制器中返回了一个JSON结果,这没有按照我的预期工作 - 它只是将JSON输出为HTML。
答案 0 :(得分: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()
答案 1 :(得分: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。这可以防止执行click事件(表单提交)。如果验证检查通过,则返回true以允许将提交表单的click事件并关闭窗口。