J'ai une action simple ASP.NET MVC comme celle-ci :
public ActionResult Edit(EditPostViewModel data)
{
}
Le site EditPostViewModel
ont des attributs de validation comme ceci :
[Display(Name = "...", Description = "...")]
[StringLength(100, MinimumLength = 3, ErrorMessage = "...")]
[Required()]
public string Title { get; set; }
Dans la vue, j'utilise les aides suivantes :
@Html.LabelFor(Model => Model.EditPostViewModel.Title, true)
@Html.TextBoxFor(Model => Model.EditPostViewModel.Title,
new { @class = "tb1", @Style = "width:400px;" })
Si je soumets un formulaire dans lequel cette zone de texte est placée, la validation sera d'abord effectuée sur le client, puis sur le service. ModelState.IsValid
).
Maintenant, j'ai quelques questions :
-
Peut-on l'utiliser avec jQuery ajax submit à la place ? Ce que je fais, c'est simplement supprimer le formulaire et, lorsque je clique sur le bouton "submit", un javascript recueille les données et exécute ensuite la fonction "ajax submit".
$.ajax
. -
Est-ce que le côté serveur
ModelState.IsValid
travail ? -
Comment puis-je renvoyer le problème de validation au client et le présenter comme si j'utilisais la validation int build(
@Html.ValidationSummary(true)
) ?
Exemple d'appel Ajax :
function SendPost(actionPath) {
$.ajax({
url: actionPath,
type: 'POST',
dataType: 'json',
data:
{
Text: $('#EditPostViewModel_Text').val(),
Title: $('#EditPostViewModel_Title').val()
},
success: function (data) {
alert('success');
},
error: function () {
alert('error');
}
});
}
Edit 1 :
Inclus dans la page :
<script src="/Scripts/jquery-1.7.1.min.js"></script>
<script src="/Scripts/jquery.validate.min.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js"></script>