none
MVC Razor EditorFor JQuery Validator für double-Werte ("," statt ".") RRS feed

  • Frage

  • Hallo,

    ich habe auf meiner Seite (Razor) folgendes Feld eingefügt:

    <
    script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <div class="editor-field"> @Html.EditorFor(model => model.Preis) @Html.ValidationMessageFor(model => model.Preis) </div>

    Im Hintergrund greift dieses auf folgendes Model zurück:

    [Display(Name = "Preis")]
    public double? Preis { get; set; }
    


    Mein Problem ist jetzt, dass der JQuery Validator in meinem Feld als Dezimaltrennzeichen nur "." aktzeptiert, ich hier aber "," brauche und er mir deswegen immer wieder sagt, dass meine Eingabe keine gültige Zahl ist.

    Wenn ich den Wert jetzt mit "." absende kommt dieser ab nicht bei meinem Controller an, sondern nur, wenn ich den Validator ausschalte und meinen Wert mit "," absende.

    Kenn jemand einen Ausweg aus diesem hin und her?

    Danke und viele Grüße, Daniel K.

    Mittwoch, 22. Juni 2011 09:13

Antworten

Alle Antworten

  • Hallo Daniel,

    da dürfte eher was in deinem Code nicht stimmen. Der Punkt ist korrekt, das Komma wäre falsch. Daher solltest Du an der Stelle suchen, an der dein Code ein Komma erwartet und die Stelle(n) entsprechend anpassen.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Mittwoch, 22. Juni 2011 10:57
    Moderator
  • Ok,

    ich hab mal hier alles zusammengefasst. Eigentlich ein ziemlich simples Szenario:

    Ich möchte einen leeren Wert in einer Tabelle füllen, dazu rufe ich mir folgende View auf:

    @model EditPricesModel
    
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
    
    @using (Html.BeginForm()) {
      @Html.ValidationSummary(true)
      <fieldset>
        <legend>AspnetPreise</legend>
    
        @Html.HiddenFor(model => model.Id)
    
        <div class="editor-label">
          @Html.LabelFor(model => model.Preis)
        </div>
        <div class="editor-field">
          @Html.EditorFor(model => model.Preis)
          @Html.ValidationMessageFor(model => model.Preis)
        </div>
    
        <p>
          <input type="submit" value="Änderungen speichern" />
        </p>
      </fieldset>
    }

    In der Datentabelle steht auch wirklich kein Wert drin bzw. ich möchte wenn dann ja auch nur einfach den Wert abspeichern, den ich in das Textfeld eintrage.

    Das Model sieht komplett so aus:

    public class EditPricesModel {
        public double? Id { get; set; }
    
        [Display(Name = "Preis")]
        public double? Preis { get; set; }
      }

    JQuery prüft ja nun Clientseitig ob die eingegebene Zahl auch wirklich eine richtige ist. Wenn ich in das Textfeld jetzt einen Wert eingebe z.B. "14,4" Dann meckert er rum und sagt mir, dass dies keine gültige Zahl ist.

    Ich möchte aber Werte mit "," eintragen und nicht mit "."

    Wo ist der Wurm begraben?

    Danke!

     

    Mittwoch, 22. Juni 2011 13:11
  • Hi,

    ohne jetzt das entsprechende Validation Plugin zu kennen, sollte sich das ggfs. einstellen lassen. Siehe dazu:

      http://docs.jquery.com/Plugins/Validation/Methods/numberDE

    Ggfs. ist das auch ein Bug:

      http://connect.microsoft.com/VisualStudio/feedback/details/645066/asp-net-mvc-3-and-the-jquery-validate-unobtrusive-js-wont-respect-culture-format

    Welche jQuery Version setzt Du denn ein?

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Mittwoch, 22. Juni 2011 13:35
    Moderator
  • Hi,

    für Jquery verwende ich die Version 1.5.2, allerdings enthält die jquery.validate.unobtrusive.min.js keine Versionsnummer und an der scheint es ja wohl zu liegen.

    Nach den Artikeln zu urteilen scheint es wirklich ein Bug zu sein, jetzt kann ich mich entscheiden, ob ich für die ganze Seite die Clientseitige Validierung entferne oder den Datentyp im Model änder und dann Serverseitig den Wert zu validieren. Oder gibt es da noch eine andere Möglichkeit? (Eventuell nur für dieses Feld die Validierung zu deaktivieren)

    Danke und viele Grüße, Daniel

    Donnerstag, 23. Juni 2011 08:39
  • Hallo,

    ich hab die Lösung gefunden

    http://rebuildall.umbraworks.net/2011/03/02/jQuery_validate_and_the_comma_decimal_separator

     

    Danke nochmals und viele Grüße, Daniel

    • Als Antwort markiert D.Kania Donnerstag, 23. Juni 2011 15:21
    Donnerstag, 23. Juni 2011 15:21