Ajouter un message d'erreur à @Html.ValidationSummary

j'utilise des vues au rasoir standard MVC3 avec validation Javascript discrète, en utilisant @Html.ValidationSummary pour afficher le haut du formulaire. Si les validations standard (des choses comme [Required]) pass, j'exécute ensuite une validation client très personnalisée qui démarre lorsque l'utilisateur appuie sur le bouton Soumettre. (La validation examine un certain nombre d'éléments de forme pour s'assurer que l'ensemble approprié d'entre eux a été vérifié, etc. il n'est pas aussi simple que juste de créer un nouveau validateur personnalisé pour un seul champ.)

je voudrais que les erreurs possibles que j'y construise soient affichées dans le ValidationSummary liste, mais je ne vois pas comment faire apparaître le message d'erreur.

25
demandé sur Eranga 2011-10-25 01:10:01
la source

2 ответов

côté client:

function YourCustomValidator() {
    // do your validation logic here via JavaScript
    return true; // or false based on your validation logic
}
$(document).ready(function () {
    // take your own form-selector like ("form", this)
    $("form", this).first().submit(function () {
        return (YourCustomValidator() && $(this).valid());
    });
});

OU côté serveur:

Pense que vous avez un modèle comme ceci:

public class Test {
    [Required]
    [StringLength(100)]
    public string FullName { get; set; }
}

et lors de la validation de la:

if(ModelState.IsValid) { // default validations run here
    if(/* some custom validations run here, there is an error about "FullName" */){
        // you should set the "key" for Model-Error to "FullName"
        ModelState.AddModelError("FullName","error-message goes here")
    }
    if(/* some custom validations run here, the error is global, not on "FullName" */){
        // you should set the "key" for Model-Error to an empty-string
        ModelState.AddModelError("","error-message goes here")
    }
    // also you can test for model-errors again like this:
    if(ModelState.IsValid) { // if you add any error above, this will be "false"

    }
}
39
répondu javad amiry 2011-10-25 19:48:38
la source

vous pouvez le faire en ajoutant simplement le Error MessageModelState devrait afficher le message d'erreur pour vous, à condition que vous avez ValidationSummary() appelée sur votre vue.

Pour ajouter l'erreur de la ModelState simplement faire ceci:

ModelState.AddModelError("ColumnNameOrErrorMessageKeyInState","error message goes here")
5
répondu Has AlTaiar 2014-04-03 05:36:21
la source

Autres questions sur