在 jQuery 对话框中以分部视图提交表单后返回数据
Returning data after submitting a form in a partial view in jQuery dialog
我有一个显示文件夹列表的页面。我有一个链接,可以在jQuery对话框中打开部分视图,以便我可以添加新的文件夹。
以下是我的主要Index
观点:
<script type="text/javascript">
$(document).ready(function () {
$('#dialog').dialog({
width: 540, height: 280, autoOpen: false, draggable: false,
resizable: false, modal: true,
open: function (event, ui) {
$(this).load("@Url.Action("Create")");
},
close: function (event, ui) {
$(this).empty();
}
});
$('ul#folders li.add').click(function () {
$('#dialog').dialog('open');
});
});
</script>
<ul id="folders">
<li class="add"><span></span></li>
</ul>
<div id="dialog"></div>
当我单击"添加"按钮时,我正在将部分视图加载到 jQuery 对话框中。这是我的部分观点:
@model FolderViewModel
<h1>Create new folder</h1>
<div id="folder-create">
@using (Ajax.BeginForm("Create", "Folders", null)) {
@Html.AntiForgeryToken()
@Html.TextBoxFor(m => m.Name, new { placeholder = "Name" })
<p>@Html.ValidationSummary()</p>
<input type="submit" class="create" value="" />
}
</div>
<script type="text/javascript">
$(document).ready(function() {
$.validator.unobtrusive.parse("#folder-create > form");
});
</script>
以下是表单发布到的方法:
[HttpPost]
public ActionResult Create(FolderViewModel viewModel)
{
if (ModelState.IsValid)
{
try
{
// create folder
}
catch
{
return View(viewModel);
}
}
return View(viewModel);
}
这里一切正常 - 验证有效,我可以提交我的表格。
唯一的问题是,一旦我成功提交表单,我想关闭模式并将新文件夹的 id 传递回Index
视图,以便我可以显示"X 已成功创建"消息。
我想我需要返回 JSON 而不是 ViewResult,并在某个地方捕获该结果,但我不确定如何返回。
您可以绑定一个函数以在 ajax 请求完成时执行某些操作:
function OnSuccess(data) {
/*Close the popup and do stuff here*/
}
Ajax.BeginForm
的AjaxOptions
应如下所示:
new AjaxOptions
{
/*Other properties*/
OnSuccess ="OnSuccess(data)"
})
在控制器中返回 Id 和其他任何内容,并在 OnSuccess
函数上使用它。
[HttpPost]
public JsonResult Create(FolderViewModel viewModel)
{
/*Do stuff to create the folder*/
return Json(/*return the Id and something else*/);
}
相关文章:
- HTML表单提交时未执行外部函数
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 将图像上传ajax与表单提交ajax相结合
- Javascript无法处理表单提交
- 如何在我的情况下禁用表单提交
- 加载后的页面与ajax表单提交不起作用
- angularjs-控制器在表单提交时未调用
- 禁用带有字符白名单的表单提交
- 如何使用Google Analytics跟踪表单提交
- 使用javascript将表单提交到iframe目标中
- e.preventDefault在表单提交时被忽略
- AngularJS JQuery Ajax表单提交等效
- JavaScript表单提交帮助
- PHP表单提交和重定向
- 当所有输入文本字段都为空时,禁止表单提交,但当jquery中的任何字段不为空时允许提交
- setTimeOut AFTER jQuery表单提交
- 从函数中选择要触发表单提交的正确元素
- JavaScript表单提交没有't fire asp服务器端点击功能的提交按钮
- 表单提交问题,如何在我的URL末尾获得ID的值
- Javascript使用Confirm取消表单提交