gpt4 book ai didi

asp.net - 当模型无效时,返回 View 内的局部 View ,并显示错误消息

转载 作者:行者123 更新时间:2023-12-04 06:40:34 24 4
gpt4 key购买 nike

在我的 asp.net MVC 4 项目中,我喜欢从部分 View 中保护一些东西,即用户单击“更多详细信息”时。
保存数据没有问题,关闭局部 View 没有问题,打开局部 View 没有问题,这是我的模型无效时(当用户忘记标记某些东西时)
结果是我的部分 View 被返回,但不在它应该在的 View 内。它只是被视为一个独立的页面。

查看:

@model Evaluatietool.ViewModels.EvaluatorWijzigenOPViewModel
<h3>@ViewBag.Message</h3>
@using (Html.BeginForm("ChangeEvaluator", "Ontwikkelplan"))
{
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.oldEvalAccount)
@Html.HiddenFor(model => model.selectedMedewerkerAccount)
@Html.HiddenFor(model => model.eval);
@Html.HiddenFor(model => model.countMedewerkers);
...

...
<div class="Buttons">
<input type="submit" value="Submit" />
@Ajax.ActionLink("Sluiten", "Evaluatorenlijst", new AjaxOptions { OnSuccess = "HideResultDiv" })
</div>
}

Controller :
[HttpPost]
public ActionResult ChangeEvaluator(EvaluatorWijzigenOPViewModel ewopvm)
{
if (ModelState.IsValid)
{
if (ewopvm.selectedObjects != null)
{
ewopvm.selectedObjects.Add(ewopvm.selectedMedewerkerAccount);
}
else
{
ewopvm.selectedObjects = new List<string>();
ewopvm.selectedObjects.Add(ewopvm.selectedMedewerkerAccount);
}
Ontwikkelplannen op = new Ontwikkelplannen();
Evaluaties e = new Evaluaties();
foreach (string s in ewopvm.selectedObjects)
{
op.ChangeEvaluator(ewopvm.newEvalAccount, ewopvm.oldEvalAccount, s, ewopvm.eval);
}
return RedirectToAction("Evaluatorenlijst");
}
return PartialView("EvaluatorWijzigenPartial", ewopvm);
}

调用局部 View 的链接
 @Ajax.ActionLink(item.Evaluator1.Naam, "EvaluatorWijzigenPartial", new { id = item.ID,     eval = true }, new AjaxOptions { UpdateTargetId = "EvaluatorWijzigen", OnComplete = "ShowResultDiv"})

Index Page
Index page + partial view
Partial view returned when model.isvalid != true

最佳答案

据我所知,您使用的是标准 Html.BeginForm发布到 ChangeEvaluator如果验证失败,则执行重定向或返回部分 View 的 Controller 操作。

所以你观察到的行为是完全正常的。如果您想实现这一点,您必须使用 AJAX 提交此表单:

@using (Ajax.BeginForm("ChangeEvaluator", "Ontwikkelplan", new AjaxOptions { OnSuccess = "handleSuccess" }))
{
...
}

然后你可以调整你的 Controller Action ,以便在成功的情况下它不会重定向,但它会返回一个包含要重定向到的 URL 的 Json 对象:
[HttpPost]
public ActionResult ChangeEvaluator(EvaluatorWijzigenOPViewModel ewopvm)
{
if (ModelState.IsValid)
{
...
return Json(new { redirectTo = Url.Action("Evaluatorenlijst") });
}
return PartialView("EvaluatorWijzigenPartial", ewopvm);
}

最后写出 handleSuccess javascript函数:
function handleSuccess(result) {
if (result.redirectTo) {
// The controller action returned a JSON object with the redirectTo property
// let's redirect to this location:
window.location.href = result.redirectTo;
} else {
// The controller action returned a partial view with the form and the errors
// So we need to update some containing DIV with it:
$('#someDivThatCOntainsYourForm').html(result);
}
}

关于asp.net - 当模型无效时,返回 View 内的局部 View ,并显示错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16588434/

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