这是我的控制器动作:
[HttpPost]
public ActionResult CreateModal(MyModel myModel)
{
if (ModelState.IsValid)
{
//success logic
}
return PartialView("_MyPartial", myModel);
}
我的部分(它在jQuery对话框中):
@using (Ajax.BeginForm("CreateModal", "MyController", new {area = "MyArea2"}, new AjaxOptions() {HttpMethod = "POST", InsertionMode = InsertionMode.Replace}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "", new {@class = "text-danger"})
<div class="row">
<fieldset>
<legend>Info</legend>
<div class="row">
<div class="form-group col-md-4">
@Html.LabelFor(model => model.Name, htmlAttributes: new {@class = "control-label"})
@Html.EditorFor(model => model.Name, new {htmlAttributes = new {@class = "form-control"}})
@Html.ValidationMessageFor(model => model.Name, "", new {@class = "text-danger"})
</div>
</div>
</fieldset>
</div>
}
我可以很好地发布我的操作,但是如果我的ModelState
无效,我在return PartialView("_MyPartial", myModel)
上没有验证错误,即使单步执行调试器我也看不到错误。
我使用了来自nuget的最新版本的jquery和相关技术。
另外,不确定是否重要,但我从MyArea1
发布到MyArea2
的控制器。 _MyPartial
位于公共文件夹中。
答案 0 :(得分:1)
AjaxOptions(){
...
OnComplete = "ParsUnob"
...
}
脚本代码:
function ParsUnob() {
$.validator.unobtrusive.parse("form");
}