Ho una pagina con più moduli, ciascuno come parziale. Voglio postare ogni partial su submit. Se ci sono errori, voglio che gli errori di validazione vengano visualizzati nel partial come parte della pagina principale, cioè non voglio vedere il partial sulla sua pagina se ci sono errori. Ho ragione nel dire che questo comportamento è possibile solo con un post ajax? Come dovrei restituire gli errori di stato del modello SENZA un post ajax, solo un post normale?Visualizza la vista parziale di mvc con errori nella pagina principale
Edit: Ancora vedendo il parziale su di essa la propria pagina
parziale -
@using (Html.BeginForm("Login", "Account", FormMethod.Post, new { id = "LoginForm" }))
{
@Html.ValidationMessage("InvalidUserNamePassword")
<fieldset class="fieldset">
<div>
<label for="form-field-user_id">User ID</label>
<span>
@Html.TextBoxFor(x => x.Username, new { @class = "form-field__input form-field__input--text", @id = "form-field-user_id"})
</span>
</div>
</fieldset>
<div class="form-field__button">
<button id="loginButton" type="submit" class="button button--primary">Login</button>
</div>
}
<script>
$('#loginButton').click(function() {
$.ajax({
type: "POST",
url: '@Url.Action("Login", "Account")',
data: $('form').serialize(),
success: function (result) {
if (result.redirectTo) {
window.location.href = result.redirectTo;
} else {
$("#LoginForm").html(result);
}
},
error: function() {
$("#LoginForm").html(result);
}
});
});
</script>
Controller -
[HttpPost]
public ActionResult Login(LoginModel model)
{
if (!ModelState.IsValid)
{
return PartialView("~/Views/Account/_Login.cshtml", model);
}
return Json(new { redirectTo = Url.Action("Index", "Profile") });
}
Si desidera che gli errori di stato del modello nella pagina principale siano separati dai parziali? – lazy
Si restituisce solo una vista parziale del modulo e si sostituisce il modulo originale con l'html restituito nella callback di successo ajax –
Voglio gli errori di stato del modello nel parziale, bu t il partial deve essere mostrato nella pagina principale come era prima del form submit, non da solo –