2017-08-28 4 views
0

In meinem ASP.NET MVC Core 1.1.1 habe ich ein Formular mit einer Eingabe wie folgt, wo der Benutzer den Bezirkscode als zwei Zeichen wie 01, 02, ... eingeben muss 10,11, usw. Aber wenn ich das Formular durch die Eingabe des Bezirkscodes als 123 zähle, übergibt es das Formular noch immer, ohne den Benutzer zu zwingen, den Bezirkscode als zwei Zeichen einzugeben. Was ich vermisse?Model Validation mit StringLength Validierungsattribut

MyViewModels

... 
[Display(Name = "District"),StringLength(2)] 
public string Dist { get; set; } 
... 

Formular

@model MyProj.Models.MyViewModel 
... 
<div class="form-group"> 
    <label asp-for="Dist" class="col-md-2 control-label"></label> 
    <div class="col-md-2"> 
     <input asp-for="Dist" class="form-control" /> 
     <span asp-validation-for="Dist" class="text-danger"></span> 
    </div> 
    <div class="col-sm-pull-8">01 to 53 — district codes</div> 
</div> 
... 

HINWEIS ich mit der neuesten Version von VS2017 Standard ASP.NET Core Web Application Vorlage bin mit, dass durch installiert Standard notwendig Bootstrap und andere Javascripts, wenn man verwendet eine solche Vorlage.

+0

hinzugefügt haben Sie den Client Javascript für die Validierung? Versuchen Sie zu überprüfen, auf dem Server (Aktion) ist der ModelState gültig und wenn der ungültige überprüfen, wenn der Grund ist, die Dist-Eigenschaft, wenn es heißt, es ist ungültig, was passiert, ist, dass Sie nicht auf dem Client (Javascript) – dime2lo

+0

@ validieren dime2lo Ich habe einen ** HINWEIS ** in den obigen Beitrag hinzugefügt, um deine Frage zu beantworten, die auch andere Leser haben könnten. – nam

+1

Haben Sie überprüft, wie das Modell auf dem Server ankommt (wenn ModelState gültig ist)? Wenn es ungültig ist, wie es sein sollte, dann liegt das Problem im Client. Vielleicht bin ich falsch, aber Sie müssen den Abschnitt für JavaScript-Client-Seite Validierung hinzufügen. '@section Skripte { @ {warten Html.RenderPartialAsync (" _ ValidationScriptsPartial "); } } ' – dime2lo

Antwort

0

1 - Der erste Parameter von StringLength ist Maximale Länge. So definieren Mindest können Sie tun:

[Display(Name = "District")] 
    [Required] 
    [StringLength(2, MinimumLength = 2)] 
    public string Dist { get; set; } 

oder:

[Display(Name = "District")] 
    [Required] 
    [MinLength(2)] 
    [MaxLength(3)] 
    public string Dist { get; set; } 
  1. Das Attribut Erforderlich fehlt!

Ansicht

Validierung Skript:

@section Scripts { @Html.Partial("_ValidationScriptsPartial") } 

-Controller

[HttpPost] 
    public IActionResult Contact(MyViewModel model) 
    { 
     if (ModelState.IsValid) 
     { ... } 
Verwandte Themen