MVC3-bewerking voor decimale velden en lokalisatie

Mijn landinstelling gebruikt een komma , en geen punt . voor decimaalscheidingsteken.

In MVC3, wanneer ik een bewerkingsweergave open waar de decimale waarden worden weergegeven

@Html.EditorFor(model => model.MyDecimalVal)

de waarde wordt correct weergegeven.

Wanneer ik de waarde met een komma invoer, krijg ik de foutmelding "Waarde is geen getal" en als ik de waarde met punt invoer, krijg ik geen fout, maar er wordt feitelijk geen waarde opgeslagen.

Hoe om te gaan met deze situatie?

10

2 antwoord

This blog post recommends overriding the default jQuery validate number and range rules in order to enable client-side support of the comma decimal separator.

Om deze problemen op te lossen, kunnen we de standaardimplementatie van de   jquery.validate.js bestand voor de bereik() en nummer() functies. Wij   maak dan een ander .js-bestand aan (zeg jQueryFixes.js), waarin wij   overschrijven deze standaardfuncties met degenen die ondersteuning bieden voor   de komma als een decimaalscheidingsteken. De inhoud van het bestand zou moeten zijn   zoiets als:

$.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);
}
16
toegevoegd
Is er een goede manier om dit te doen?
toegevoegd de auteur Christoph Brückmann, de bron
Ik bedoel, hoe zit het met het omgaan met verschillende decimale waarden in verschillende culturen? Natuurlijk wil ik gewoon de waarden in één cultuur opslaan, maar ik wil de bezoeker van de webpagina de kans geven om decimale waarden in zijn cultuur op te nemen en te valideren.
toegevoegd de auteur Christoph Brückmann, de bron

Om hiermee om te gaan door je valideringslogica aan te passen is al uitgelegd dus hier is een andere aanpak.

Put the below code inside your web.config file under the node if you would like to set the culture to en. It will take care of decimal delimiter:


Ik weet het niet zeker, maar voor DateTime ben je nog steeds gebonden aan de locale van je server.

6
toegevoegd
Bedankt, dit zorgde voor zowel datetime- als nummerformaten (maar dwong ze voor en locale)
toegevoegd de auteur bzamfir, de bron
hoe ter wereld is dit een oplossing - de cultuur dwingend naar het Engels?
toegevoegd de auteur gangelo, de bron
@bzamfir right. Wat ik deze aanpak noem, is een tijdelijke oplossing. De permanente oplossing is om uw serverlocaties te configureren.
toegevoegd de auteur tugberk, de bron
@gangelo als de eindgebruiker zich niets aantrekt van de cultuurspecifieke waarde, ik weet vrij zeker dat dit een behoorlijk goede oplossing is!
toegevoegd de auteur tugberk, de bron
Dat is absoluut geweldig. Je hebt mijn dag gered, bedankt.
toegevoegd de auteur MikkaRin, de bron