gpt4 book ai didi

asp.net-mvc - 如何在服务器端验证错误后显示 Jquery 模式对话框

转载 作者:行者123 更新时间:2023-12-01 02:08:04 25 4
gpt4 key购买 nike

我对 JQuery 和 MVC 非常陌生。在我的应用程序中,我在单击按钮时打开一个 JQuery 模式对话框。我正在使用 Controller 操作方法在此对话框上渲染部分 View ,如下所示:

public ActionResult Create()
{
return PartialView("Create");
}

部分 View 包含一些文本框和“创建”按钮。在创建按钮上,我试图将数据保存在数据库中。但在此之前,我会进行一些验证,例如输入的名称是否已存在,然后向用户显示该消息。我使用以下代码完成了此操作:

return PartialView("Create", model);

这正确显示了消息,但它仅在浏览器中呈现部分 View ,并且模式对话框消失了。

请告诉我如何显示带有错误的相同模式对话框。

最佳答案

您将需要使用 AJAX 提交表单。以下是如何进行。一如既往,从 View 模型开始,它将代表对话框表单的信息:

public class MyViewModel
{
public string Foo { get; set; }

[Required(ErrorMessage = "The bar is absolutely required")]
public string Bar { get; set; }
}

然后是一个 Controller :

public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}

public ActionResult Create()
{
return PartialView("Create");
}

[HttpPost]
public ActionResult Create(MyViewModel model)
{
if (!ModelState.IsValid)
{
return PartialView(model);
}
// TODO: the model is valid => do some processing with it
// and return a JSON result confirming the success
return Json(new { success = true });
}
}

和主视图(~/Views/Home/Index.cshtml):

<script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.js")" type="text/javascript"></script>
<script type="text/javascript">
// Remark: all this javascript could be placed in a separate js file
// to avoid cluttering the views
$(function () {
$('#modalLink').click(function () {
$('#dialog').load(this.href, function () {
$(this).dialog();
bindForm(this);
});
return false;
});
});

function bindForm(dialog) {
$('form', dialog).submit(function () {
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function (result) {
if (result.success) {
alert('thanks for submitting');
$('#dialog').dialog('close');
} else {
$('#dialog').html(result);
bindForm();
}
}
});
return false;
});
}
</script>


@Html.ActionLink("open modal", "create", null, null, new { id = "modalLink" })
<div id="dialog"></div>

和一个部分 View (~/Views/Home/Create.cshtml),它将包含模式中显示的表单:

@model MyViewModel
@using (Html.BeginForm())
{
<div>
@Html.LabelFor(x => x.Foo)
@Html.EditorFor(x => x.Foo)
@Html.ValidationMessageFor(x => x.Foo)
</div>
<div>
@Html.LabelFor(x => x.Bar)
@Html.EditorFor(x => x.Bar)
@Html.ValidationMessageFor(x => x.Bar)
</div>
<input type="submit" value="OK" />
}

关于asp.net-mvc - 如何在服务器端验证错误后显示 Jquery 模式对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6623671/

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