Я пытаюсь использовать Ajax.BeginForm для отправки данных контроллеру. В случае конкретных ошибок форма должна повторно отобразить и отобразить пользовательское сообщение об ошибке, которое было добавлено в ModelState. По какой-то причине сообщение об ошибке не отображается. Я даже пытаюсь выполнить следующий тестовый пример, который не работает, я чего-то не хватает?Ajax.BeginForm не работает с Html.ValidationSummary
Edit.cshtml:
@using (Ajax.BeginForm("Edit", "UserInformation", FormMethod.Post, new AjaxOptions { HttpMethod = "Post", InsertionMode = InsertionMode.Replace, UpdateTargetId = "divFormContainerMain", LoadingElementId = "divPreLoader", OnSuccess = "onSuccess" }))
{
<div id="divPreLoader" style="display:none; text-align: center"><img src="@Url.Content("~/Content/images/preLoader.gif")" alt="" /></div>
<div id="divFormContainerMain">
@Html.Partial("_EditPartialView", Model)
</div>
<div class="buttonContainerBottom">
<span class="buttonContainerInner">
<input type="submit" id="btnSave" name="buttonPress" value="save" class="orangeButton" />
</span>
</div>
}
_EditPartialView.cshtml:
@Html.ValidationSummary(false)
<div id="divFormContainerUserInformation" class="formContainer">
<div class="labelContainer">
@Html.LabelFor(m => m.UserName)
</div>
<div class="elementContainer">
@Html.TextBoxFor(m => m.UserName, new { style = "width: 200px" })
@Html.ValidationMessageFor(m => m.UserName)
</div>
<div class="labelContainer">
@Html.LabelFor(m => m.Name)
</div>
<div class="elementContainer">
@Html.TextBoxFor(m => m.Name, new { style = "width: 200px" })
@Html.ValidationMessageFor(m => m.Name)
</div>
<div class="labelContainer">
@Html.LabelFor(m => m.EmailAddress)
</div>
<div class="elementContainer">
@Html.TextBoxFor(m => m.EmailAddress, new { style = "width: 200px" })
@Html.ValidationMessageFor(m => m.EmailAddress)
</div>
.
.
.
.
.
.
</div>
UserController:
[HttpPost]
public ActionResult Edit(UserModel userModel)
{
ModelState.AddModelError("", "This is a test");
return PartialView("_EditPartialView", userModel);
}
Здесь находятся записи скрипта: –
user1790300
Я не могу видеть, что' jquery.unobtrusive-ajax.js' включен куда угодно. Вот почему ваш код, вероятно, не работает, как объяснено в моем ответе. Убедитесь, что вы включили этот скрипт. –
К сожалению: – user1790300