Maison  >  Article  >  développement back-end  >  Résumé des exemples de validation de données dans MVC

Résumé des exemples de validation de données dans MVC

零下一度
零下一度original
2017-06-24 09:44:141428parcourir

1. Situation générale

Pour ceux qui ont utilisé le framework MVC, la vérification des données de MVC sera familière. Par exemple, j'ai un modèle. Comme suit :

1     public class UserInfo2     {3         [Required(ErrorMessage = "UserName不可为空1111")]4         public string UserName { get; set; }5         public string Sex { get; set; }6         public string Mobile { get; set; }7         public string Address { get; set; }8     }

Front end :

 1 @using (Html.BeginForm()) 
 2 { 3     @Html.AntiForgeryToken() 4     <div class="form-horizontal"> 5         <h4>UserInfo</h4> 6         <hr /> 7         @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 8         <div class="form-group"> 9             @Html.LabelFor(model => model.UserName, htmlAttributes: new { @class = "control-label col-md-2" })10             <div class="col-md-10">11                 @Html.EditorFor(model => model.UserName, new { htmlAttributes = new { @class = "form-control" } })12                 @Html.ValidationMessageFor(model => model.UserName, "", new { @class = "text-danger" })13             </div>14         </div>15         <div class="form-group">16             @Html.LabelFor(model => model.Sex, htmlAttributes: new { @class = "control-label col-md-2" })17             <div class="col-md-10">18                 @Html.EditorFor(model => model.Sex, new { htmlAttributes = new { @class = "form-control" } })19                 @Html.ValidationMessageFor(model => model.Sex, "", new { @class = "text-danger" })20             </div>21         </div>22         <div class="form-group">23             @Html.LabelFor(model => model.Mobile, htmlAttributes: new { @class = "control-label col-md-2" })24             <div class="col-md-10">25                 @Html.EditorFor(model => model.Mobile, new { htmlAttributes = new { @class = "form-control" } })26                 @Html.ValidationMessageFor(model => model.Mobile, "", new { @class = "text-danger" })27             </div>28         </div>29         <div class="form-group">30             @Html.LabelFor(model => model.Address, htmlAttributes: new { @class = "control-label col-md-2" })31             <div class="col-md-10">32                 @Html.EditorFor(model => model.Address, new { htmlAttributes = new { @class = "form-control" } })33                 @Html.ValidationMessageFor(model => model.Address, "", new { @class = "text-danger" })34             </div>35         </div>36         <div class="form-group">37             <div class="col-md-offset-2 col-md-10">38                 <input type="submit" value="Create" class="btn btn-default" />39             </div>40         </div>41     </div>42 }

Effet :

Oui, MVC peut vérifier les données en ajoutant certaines caractéristiques à certains attributs. Cela n’est peut-être pas inconnu de tout le monde.

Si c’est tout ce que c’est, alors ça va.

2. Situations courantes

Dans le développement réel, nous utilisons principalement EF ou d'autres méthodes pour faire correspondre chaque entrée dans les tables ou vues de la base de données. à un modèle de classe dans le code. Pour le modèle généré via la base de données, nous ne devons pas le modifier. Pour prendre du recul, même si nous ajoutons des fonctionnalités de vérification des données à certains attributs de cette classe, la base de données changera plus tard. , si je régénère ces modèles, les fonctionnalités de vérification que nous avons ajoutées auparavant disparaîtront. Alors, comment résoudre ce problème ?

Supposons :

1     public class UserInfo2     {    
3         public string UserName { get; set; }4         public string Sex { get; set; }5         public string Mobile { get; set; }6         public string Address { get; set; }7     }

UserInfo est un modèle généré via la base de données. Nous ne devons pas modifier le modèle généré par la base de données. Mais c'est-à-dire que nous devons effectuer une vérification des données sur certains attributs de ce modèle. Par exemple, nous devons effectuer une vérification non nulle sur l'attribut UserName. Alors, comment procédons-nous ?

Tout le monde pense généralement à une classification partielle. Oui, nous pouvons résoudre les problèmes ci-dessus grâce à une classification partielle.

Tout d'abord, nous ajoutons le mot-clé partial à la classe dans le modèle, puis nous écrivons une classe partielle de ce modèle.

1     public partial class UserInfo2     {3         [Required(ErrorMessage = "UserName不可为空1111")]4         public string UserName { get; set; }5     }

Cependant, cela nous demandera une erreur, c'est-à-dire qu'il y a des attributs en double dans la classe Oui, dans certaines classes, les attributs ne peuvent pas avoir le même nom. Alors, que devons-nous faire ? Le framework MVC nous a déjà apporté une solution.

Nous pouvons écrire :

1     [MetadataType(typeof(MeteUserInfo))]2     public partial class UserInfo3     {4         private class  MeteUserInfo5         {6             [Required(ErrorMessage = "UserName不可为空1111")]7             public string UserName { get; set; }8         }9     }

De cette façon, notre problème ci-dessus sera facilement résolu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn