Comment puis-je définir à la fois le séparateur décimal par défaut et le séparateur de milliers pour le formatage dans asp.net mvc indépendamment de la culture?asp.net mvc set nombre nombre par défaut décimal milliers séparateurs
Répondre
Je vais poster le code qui a finalement fonctionné pour moi. Le contrôleur, sur la fonction OnActionExecuting:
ViewBag.CurrentNumberFormat = new System.Globalization.CultureInfo("en-US", false).NumberFormat;
ViewBag.CurrentNumberFormat.NumberDecimalDigits = 2;
ViewBag.CurrentNumberFormat.NumberDecimalSeparator = "~";
ViewBag.CurrentNumberFormat.NumberGroupSeparator = " ";
et Vue:
@((1234567.435).ToString("#,###.##", ViewBag.CurrentNumberFormat))
string.Format("{0:N2}", yourLovelyNumber);
ok, mais je veux être en mesure de spécifier par moi-même les séparateurs décimaux et des milliers, comment puis-je faire cela? –
Vous pouvez créer un DisplayTemplate
qui traiterait comment de tels chiffres sont affichés dans votre point de vue:
/Views/Shared/DisplayTemplates/float.cshmtl
:
@model float
@string.Format("{0:N2}", Model);
et vous pouvez l'appeler comme celui-ci de votre point de vue, si Amount
était de type float
:
@Html.DisplayFor(m => m.Amount)
Comment ce modèle est-il référencé? –
Pour contrôler le séparateur de milliers, vous devez appliquer vos modifications au NumberFormat
pour la culture actuelle.
Si vous voulez que cela se produise indépendamment de la culture actuelle, vous pouvez simplement cloner la culture actuelle, appliquer votre NumberFormat
modifié et le définir comme le courant.
Dans une application MVC vous généralement faire pendant Application_BeginRequest
protected void Application_BeginRequest(object sender, EventArgs e)
{
newCulture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
newCulture.NumberFormat.NumberGroupSeparator = "~";
System.Threading.Thread.CurrentThread.CurrentCulture = newCulture;
System.Threading.Thread.CurrentThread.CurrentUICulture = newCulture;
}
Maintenant, vous pouvez utiliser la mise en forme « normale » des options de ToString() afin de mieux contrôler la mise en forme en fonction de vos besoins:
var a = 3000.5;
var s = a.ToString('N:2') // 3~000.50
s = a.ToString('N:4') // 3~000.5000
La mise à jour de System.Threading.Thread.CurrentThread.CurrentCulture ne fonctionnait pas car cela provoquait des erreurs supplémentaires. Je peux donner un exemple: quand j'essaye de convertir une chaîne dans le format par défaut ("14543.12" par exemple) dans Number, il va lancer une erreur. Ce qui a du sens. –
Vous devez spécifier un format numérique personnalisé afin de réaliser ce que vous recherchez. Here is the MSDN sur la création de fonctions de formatage de chaînes personnalisées.
Si vous avez vraiment besoin d'un séparateur de milliers personnalisé, créez votre propre variable NumberFormatInfo en affectant les valeurs souhaitées au séparateur de milliers (et au nombre décimal si nécessaire). Ensuite, appliquez le format personnalisé à votre numéro.
var numberFormatter = new CultureInfo("en-US", false).NumberFormat;
numberFormat.NumberDecimalSeparator = ";";
numberFormat.NumberGroupSeparator = "-";
var myNumber = 1234567.89;
var myFormattedNumber = myNumber.ToString("#,###.##", numberFormatter);
//myFormattedNumber -> 1-234-567;89
Quelques informations sur le NumberFormat class from the MSDN
variable.ToString ("n2") - Cela a fonctionné pour moi dans ASP.Net MVC Razor.
J'ai eu le même problème et peut recommander autoNumeric plug-in https://github.com/autoNumeric/autoNumeric
Inclure plugin:
<script src="~/Scripts/autoNumeric/autoNumeric.min.js" type="text/javascript"></script>
Html:
<input type="text" id="DEMO" data-a-sign="" data-a-dec="," data-a-sep="." class="form-control">
Script:
<script>
jQuery(function($) {
$('#DEMO').autoNumeric('init');
});
</script>
Vous pouvez taper seulement un nombre, si vous tapez 100000,99 vous verrez 100.000,99.
A partir d'aujourd'hui, l'ancienne notation avec jQuery n'est plus supportée dans la version stable actuelle '4'. Cela ne fonctionnera pas. Utilisez simplement' new AutoNumeric ('# DEMO') 'et vous êtes prêt à partir! – Alex
- 1. Comment analyser le nombre avec plusieurs milliers de séparateurs possibles?
- 2. Ajouter des séparateurs de milliers 'décimales' à un nombre
- 3. Modifier les séparateurs décimal et milliers dans Excel POI
- 4. Nombre décimal
- 5. Pourquoi le datamapper arrondit toujours un nombre décimal par défaut à un nombre entier
- 6. "Le champ décimal doit être un nombre"
- 7. inputscope nombre décimal espagnol
- 8. Impression d'un nombre décimal
- 9. Flex: NumericStepper arrondi nombre décimal
- 10. Comment insérer des séparateurs de milliers seulement avant le séparateur décimal
- 11. xslt format nombre décimal, nombre inférieur d'un
- 12. Imprimer un nombre entier comme nombre décimal
- 13. Asp.net MVC - Nombre variable d'entrées
- 14. Nombre décimal utilisant CarlosAg.ExcelXmlWriter
- 15. Analyse d'un nombre décimal
- 16. Nombre décimal JQuery animé
- 17. Jquery nombre décimal séparé
- 18. Excel Randomize Nombre décimal
- 19. Qt - point décimal personnalisé et séparateur de milliers
- 20. Séparateurs de milliers dans Ext.form.NumberField
- 21. Formate un nombre pour montrer des milliers et des séparateurs décimaux
- 22. Valeur du nombre décimal dans MVC TextBoxFor est étendu par des décimales
- 23. ASP.NET MySql set dateformat par défaut
- 24. Oracle nombre à C# décimal
- 25. Nombre Mise en forme en milliers
- 26. troncature nombre décimal non Arrondir
- 27. Nombre décimal, to_char et Oracle
- 28. jQuery Valider que nombre décimal
- 29. Problèmes de nombre décimal MongoRegex
- 30. Limitation du nombre d'appels par jour dans ASP.NET MVC 3?
En quoi cela diffère-t-il de ce que j'ai posté ci-dessous :(Je suis content que vous l'ayez fait! – Tommy
C'est différent parce que je n'ai pas besoin d'écrire 5 lignes de code au lieu d'une fois Votre message était en effet utile et inspirant, merci –