1

ich Entity Framework mit Data Annotations bin mit, in meinem Modell (myModel.cs) Ich habe dieses Feld:DataAnnotations reichen in Nummer anzeigen Helfer

[DisplayName("My object")] 
    [Required] 
    [Range(1, 10)] 
    public Int16 myObject { get; set; } 

In der Ansicht ich diesen Razor Helfer haben:

@Html.EditorFor(model => model.myObject , new { htmlAttributes = new { @class = "form-control", type = "number", placeholder = "Type the number of objects" } }) 

Mit dem oben genannten Code kann der Benutzer die Nummer 1000 eingeben und nur während des Sendens des Formulars einen Validierungsfehler zurückgeben.
Ich möchte den EditorFor Helper in meiner Ansicht für die Möglichkeit zu konfigurieren, dass der Benutzer keine Werte kleiner als 1 oder größer als 10 eingeben: Beispiele für die Verwendung des Min- und Max-Attributs in htmlAttributes mit den Werten von Datenanmerkungen, aber Wie macht man das?

+1

Sie müssen einige clientseitige Plugins verwenden, um das zu tun. – Shyju

Antwort

0

Wenn Sie verhindern möchten, dass Benutzer einige Werte auf der Clientseite eingeben, sollten Sie javascript verwenden. Für Ihren Fall können Sie es wie folgt (Beispiel mit html) schreiben:

document.getElementsByClassName('restrict-number-range')[0].oninput = function() { 
 
     var max = parseInt(this.getAttribute('data-val-range-max')); 
 
     if (parseInt(this.value) > max) { 
 
      this.value = max; 
 
      return; 
 
     } 
 

 
     var min = parseInt(this.getAttribute('data-val-range-min')); 
 
     if (parseInt(this.value) < min) { 
 
      this.value = min; 
 
      return; 
 
     } 
 
    }
<input type="myObject" class="restrict-number-range" data-val-range-max='10' data-val-range-min='1'/>

ich aus data Attribute nur Informationen erhalten, die von Html-Helfer erzeugt. Ihr Helfer wird so aussehen (vergessen Sie nicht, js hinzuzufügen):

@Html.EditorFor(model => model.myObject, 
       new { 
       htmlAttributes = new { 
        @class = "form-control restrict-number-range", //check class 
        type = "number", 
        placeholder = "Type the number of objects" 
        }}) 
Verwandte Themen