Heim  >  Artikel  >  Backend-Entwicklung  >  Teilen Sie die Beispieleinführung für die MVC-Datenvalidierung

Teilen Sie die Beispieleinführung für die MVC-Datenvalidierung

零下一度
零下一度Original
2017-06-15 13:48:22995Durchsuche

In diesem Artikel werden hauptsächlich die relevanten Informationen zur MVC-Datenüberprüfung ausführlich vorgestellt, die einen gewissen Referenzwert haben

Allgemeine Situation

Für diejenigen, die das MVC-Framework verwendet haben, wird die MVC-Datenüberprüfung bekannt sein. Ich habe beispielsweise ein Modell wie folgt:


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; }
  }

Front-End:


@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>
}

Wirkung:

Ja, MVC kann einige Attribute Bestimmte Funktionen hinzufügen um die Daten zu überprüfen. Das dürfte nicht jedem unbekannt sein.

Wenn das alles ist, dann ist es in Ordnung.

2. Häufige Situationen

In der tatsächlichen Entwicklung verwenden wir meistens EF oder andere Methoden, um jede Tabelle oder Ansicht in der Datenbank zu erstellen Entspricht einer Klasse Modell im Code. Wir sollten das durch die Datenbank generierte Modell nicht ändern, selbst wenn wir einige Datenüberprüfungsfunktionen zu einigen Attributen in dieser Klasse hinzufügen Datenbankänderungen: Wenn ich diese Modelle neu generiere, gehen die zuvor hinzugefügten Überprüfungsfunktionen verloren. Wie lösen wir dieses Problem?

Angenommen:


public class UserInfo
  {  
    public string UserName { get; set; }
    public string Sex { get; set; }
    public string Mobile { get; set; }
    public string Address { get; set; }
  }

UserInfo ist ein durch die Datenbank generiertes Modell. Wir sollten das von der Datenbank generierte Modell nicht ändern. Das heißt, wir müssen eine Datenüberprüfung für bestimmte Attribute in diesem Modell durchführen. Beispielsweise müssen wir eine Nicht-Null-Überprüfung für das UserName-Attribut durchführen.

Normalerweise denkt jeder an eine Teilklassifizierung. Ja, wir können die oben genannten Probleme durch eine Teilklassifizierung lösen.

Zuerst fügen wir das Schlüsselwort „partial“ zur Klasse im Modell hinzu und schreiben dann eine Teilklasse dieses Modells.


public partial class UserInfo
  {
    [Required(ErrorMessage = "UserName不可为空1111")]
    public string UserName { get; set; }
  }

Dies führt jedoch zu einem Fehler, das heißt, es gibt doppelte Attribute in der Klasse. Ja, in einigen Klassen können Attribute nicht denselben Namen haben . Was sollen wir also tun? Das MVC-Framework hat uns bereits eine Lösung gegeben.

Wir können schreiben:


[MetadataType(typeof(MeteUserInfo))]
  public partial class UserInfo
  {
    private class MeteUserInfo
    {
      [Required(ErrorMessage = "UserName不可为空1111")]
      public string UserName { get; set; }
    }
  }

Auf diese Weise wird unser obiges Problem leicht gelöst.

Das obige ist der detaillierte Inhalt vonTeilen Sie die Beispieleinführung für die MVC-Datenvalidierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn