Maison > développement back-end > tutoriel php > Partager l'introduction de l'exemple de validation des données MVC

Partager l'introduction de l'exemple de validation des données MVC

零下一度
Libérer: 2023-03-10 11:24:02
original
1015 Les gens l'ont consulté

Cet article présente principalement en détail les informations pertinentes sur la vérification des données MVC, qui ont une certaine valeur de référence. Les amis intéressés peuvent s'y référer

Situation générale

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


public class UserInfo
  {
    [Required(ErrorMessage = "UserName不可为空1111")]
    public string UserName { get; set; }
    public string Sex { get; set; }
    public string Mobile { get; set; }
    public string Address { get; set; }
  }
Copier après la connexion
Front-end : <. 🎜>


Effet :
@using (Html.BeginForm()) 
{
  @Html.AntiForgeryToken()
  <p class="form-horizontal">
    <h4>UserInfo</h4>
    <hr />
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    <p class="form-group">
      @Html.LabelFor(model => model.UserName, htmlAttributes: new { @class = "control-label col-md-2" })
      <p class="col-md-10">
        @Html.EditorFor(model => model.UserName, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.UserName, "", new { @class = "text-danger" })
      </p>
    </p>
    <p class="form-group">
      @Html.LabelFor(model => model.Sex, htmlAttributes: new { @class = "control-label col-md-2" })
      <p class="col-md-10">
        @Html.EditorFor(model => model.Sex, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.Sex, "", new { @class = "text-danger" })
      </p>
    </p>
    <p class="form-group">
      @Html.LabelFor(model => model.Mobile, htmlAttributes: new { @class = "control-label col-md-2" })
      <p class="col-md-10">
        @Html.EditorFor(model => model.Mobile, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.Mobile, "", new { @class = "text-danger" })
      </p>
    </p>
    <p class="form-group">
      @Html.LabelFor(model => model.Address, htmlAttributes: new { @class = "control-label col-md-2" })
      <p class="col-md-10">
        @Html.EditorFor(model => model.Address, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.Address, "", new { @class = "text-danger" })
      </p>
    </p>
    <p class="form-group">
      <p class="col-md-offset-2 col-md-10">
        <input type="submit" value="Create" class="btn btn-default" />
      </p>
    </p>
  </p>
}
Copier après la connexion

Oui, MVC peut transmettre certains

attributs

Ajouter certaines fonctionnalités pour vérifier les données. Cela n’est peut-être pas inconnu de tout le monde. Si c’est tout, alors ça va.

2. Situations courantes

Dans le développement réel, nous utilisons principalement EF ou d'autres méthodes pour créer chaque table ou

vue de la base de données

, toutes correspondent à une classe modèle dans le code. Nous ne devons pas modifier le modèle généré via la base de données, même si nous ajoutons quelques fonctionnalités de vérification des données à certains attributs de cette classe, puis, après le. modifications de la base de données, 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 :


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 autrement dit, 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 ?
public class UserInfo
  {  
    public string UserName { get; set; }
    public string Sex { get; set; }
    public string Mobile { get; set; }
    public string Address { get; set; }
  }
Copier après la connexion

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.


Cependant, cela nous provoquera 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.
public partial class UserInfo
  {
    [Required(ErrorMessage = "UserName不可为空1111")]
    public string UserName { get; set; }
  }
Copier après la connexion

Nous pouvons écrire :


De cette façon, notre problème ci-dessus sera facilement résolu.
[MetadataType(typeof(MeteUserInfo))]
  public partial class UserInfo
  {
    private class MeteUserInfo
    {
      [Required(ErrorMessage = "UserName不可为空1111")]
      public string UserName { get; set; }
    }
  }
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal