gpt4 book ai didi

javascript - 在 jQuery 对话框的部分 View 中提交表单后返回数据

转载 作者:行者123 更新时间:2023-12-02 18:09:33 25 4
gpt4 key购买 nike

我有一个显示文件夹列表的页面。我有一个链接,可以在 jQuery 对话框中打开部分 View ,以便我可以添加新文件夹。

这是我的主 Index View 中的内容:

<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>

当我单击“添加”按钮时,我将部分 View 加载到 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 View ,以便我可以显示“X 创建成功”消息。

我想我需要返回 JSON 而不是 ViewResult,并在某处捕获该结果,但我不确定如何实现。

最佳答案

您可以绑定(bind)一个函数来在 ajax 请求完成时执行某些操作:

function OnSuccess(data) {
/*Close the popup and do stuff here*/
}

Ajax.BeginFormAjaxOptions 应该如下所示:

 new AjaxOptions 
{
/*Other properties*/
OnSuccess ="OnSuccess(data)"
})

在 Controller 中返回 Id 和其他任何内容,然后在 OnSuccess 函数中使用它。

[HttpPost]
public JsonResult Create(FolderViewModel viewModel)
{
/*Do stuff to create the folder*/
return Json(/*return the Id and something else*/);
}

关于javascript - 在 jQuery 对话框的部分 View 中提交表单后返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19823434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com