2015-05-26 20 views
6

Ich habe dieses Feld:Das Feld muss eine Zahl

public decimal Price { get; set; } in Database es dezimal (7,2).

Ausblick:

@Html.EditorFor(model => model.Price, 
       new { htmlAttributes = new { @class = "form-control" } }) 

Wenn ich einen Wert mit Komma setzen, Validierung MVC Standard nicht unterstützt, sagt: "The field must be a number". (Ich habe versucht, einen Regex verwenden, aber keine Möglichkeit)

Zum Beispiel: 5,00, 55,00 or 555,00

Auch dieses:

public DateTime date { get;set; } 

Ausblick:

@Html.EditorFor(model => model.Date, 
       new { htmlAttributes = new { @class = "form-control" } }) 

MVC Standard-Validierung akzeptiert keine Termine im Format dd/mm/yyyy, nur in mm/dd/yyyy.

Zum Beispiel: 13/02/2015, 15/06/2013, 25/08/2012

Ist etwas mit der Globalisierung, oder was? Wie kann ich das lösen?

+0

Es gibt zwei verschiedene Frage, es ist besser, separate Frage zu erstellen. Für das Datetime-Format können Sie die Globalisierungseinstellung verwenden und den Thread in jeder beliebigen Kultur aktualisieren. Für die erste Frage können Sie den Datentyp Money statt int – Peyman

+0

verwenden. Weisen Sie eine Zeichenfolge zu? Können wir den Code sehen, dem Sie den Wert zuweisen? –

+0

Dies ist in der Tat ein Globalisierungsproblem. Haben Sie Probleme mit der clientseitigen Validierung, serverseitig oder beidem? –

Antwort

0

Vielleicht möchten Sie Ihre Feld mit dem Attribut [DisplayFormat] als Gebrüll dekorieren:

[DisplayFormat(DataFormatString = "{0:N}", ApplyFormatInEditMode = true)] 
public decimal Price { get; set; } 
+3

Nein, der gleiche Fehler. – developer033

0

ich das gleiche Problem haben, habe ich es mit der Globalisierung Bibliothek (globalize.js) zu lösen, aber sie verändert es so Es enthält nicht die Lokalisierungsdateien. Es soll sie aus der Cldr-Bibliothek holen, aber ich habe nicht herausgefunden, wie.

1

Sie müssen Ihre Immobilie mit [DataType(DataType.Currency)] markieren.

[DataType(DataType.Currency)] 
public decimal Price { get;set;} 
0

Sie könnten Ihre Antwort hier error with decimal in mvc3 - the value is not valid for field finden, ist es nicht für mich arbeiten, so habe ich diese temporäre

<div class="col-md-10"> 
      @{ Html.EnableClientValidation(false); } 
      @Html.EditorFor(model => model.DecimalValue, new { htmlAttributes = new { @class = "form-control" } }) 
      @{ Html.EnableClientValidation(true); } 
      @Html.ValidationMessageFor(model => model.DecimalValue, "", new { @class = "text-danger" }) 
     </div> 

und ich finde hier diese ASP .NET MVC Disable Client Side Validation at Per-Field Level

8

Eine Lösung, die ich fand, war zu Überschreiben Sie die Validierungsfunktionen von jquery.validate.js


<script> 

    $.validator.methods.range = function (value, element, param) { 
     var globalizedValue = value.replace(",", "."); 
     return this.optional(element) || (globalizedValue >= param[0] && globalizedValue <= param[1]); 
    } 

    $.validator.methods.number = function (value, element) { 
     return this.optional(element) || /-?(?:\d+|\d{1,3}(?:[\s\.,]\d{3})+)(?:[\.,]\d+)?$/.test(value); 
    } 
    //Date dd/MM/yyyy 
    $.validator.methods.date = function (value, element) { 
     var date = value.split("/"); 
     return this.optional(element) || !/Invalid|NaN/.test(new Date(date[2], date[1], date[0]).toString()); 
    } 
</script> 
+1

Funktioniert wie ein Charme. – Yoshi

Verwandte Themen