У меня есть частичное представление, которое не обновляет только частичное, оно перенаправляет на действие для всей страницы.
В частичном представлении _registerAccount.cshtml, которое содержит запрос на публикацию для регистрации,запрос выполняется через Ajax в представлении с именем _registerAccount следующим образом:
@model LoginDemo.Models.LdapAccountModel
@using (Ajax.BeginForm("RegisterLdapAccount", "Account", new AjaxOptions
{
HttpMethod = "Post",
InsertionMode = InsertionMode.Replace
}))
{
@Html.ValidationSummary()
@Html.LabelFor(x => Model.Email) @Html.TextBoxFor(x => Model.Email, new { id = "reg-ytu-email" })
<br />
@Html.LabelFor(x => Model.Password) @Html.PasswordFor(x => Model.Password, new { id = "reg-pw" })
<input type="submit" value="Register" class="btn" />
}
На родительской странице Register.cshtml У меня есть:
@model LoginDemo.Models.RegisterModel
...
<div class="panel hide register-type register-ytu">
@Html.Partial("_registerAccount")
</div>
В контроллере учетной записи выполняется запрос ajaxк действию RegisterAccount:
[HttpPost]
public async Task<ActionResult> RegisterLdapAccount(LdapAccountModel model)
{
if (model.exists()) // pseudo code
{
return Json(new {foo: "bar"}); // return address to redirect to
}
else
{
ModelState.AddModelError("", "You must have a valid account.");
return PartialView(model); // return error
}
}
Проблема, с которой я столкнулся, заключается в том, что все, что возвращается, стирает всю страницу, а не обновляет только частичное на родительской странице.То есть, в случае успеха, возвращение JSON возвращает только JSON, в случае неудачи возвращение частичного представления возвращает только частичное.
nb У меня есть <add key="UnobtrusiveJavaScriptEnabled" value="true" />
в моем файле web.config.