Heim > Backend-Entwicklung > C#.Net-Tutorial > Zusammenfassung der Datenvalidierungsbeispiele in MVC

Zusammenfassung der Datenvalidierungsbeispiele in MVC

零下一度
Freigeben: 2017-06-24 09:44:14
Original
1527 Leute haben es durchsucht

1. Allgemeine Situation

Für diejenigen, die das MVC-Framework verwendet haben, wird die Datenüberprüfung von MVC bekannt sein Wie folgt:

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     }
Nach dem Login kopieren

Frontend:

 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 }
Nach dem Login kopieren

Wirkung:

Ja, MVC kann Daten überprüfen, indem es bestimmten Attributen bestimmte Merkmale hinzufügt. 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 sicherzustellen, dass jeder Eintrag in den Datenbanktabellen oder -ansichten übereinstimmt Für das über die Datenbank generierte Modell sollten wir keinen Schritt zurückgehen, auch wenn wir einige Datenüberprüfungsfunktionen in dieser Klasse hinzufügen Wenn ich diese Modelle neu generiere, gehen die zuvor hinzugefügten Überprüfungsfunktionen verloren. Wie lösen wir dieses Problem?

Angenommen:

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     }
Nach dem Login kopieren

UserInfo ist ein durch die Datenbank generiertes Modell. Wir sollten das von der Datenbank generierte Modell nicht ändern. Aber 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.

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

Dies führt jedoch zu einer Fehlermeldung, 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:

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     }
Nach dem Login kopieren

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

Das obige ist der detaillierte Inhalt vonZusammenfassung der Datenvalidierungsbeispiele in MVC. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage