Existe-t-il un moyen d'obtenir UpdateModel ou TryUpdateModel pour analyser une valeur au format monétaire ou monétaire telle que 1 200,00 $ en une décimale sans souffler des morceaux?TryUpdateModel avec une valeur au format monétaire?
Répondre
Utilisez un modèle de classeur personnalisé.
Pas aussi simple ou élégant que j'espérais, mais avec quelques ajustements, ça a vraiment marché, alors merci. Je vais poster mon classeur modifié. –
Êtes-vous capable d'analyser la valeur à l'avance avant d'appeler l'une de ces méthodes? Si oui, vous pouvez utiliser la méthode suivante pour le faire
var provider = (NumberFormatInfo)CultureInfo.InvariantCulture.NumberFormat.Clone();
provider.CurrencySymbol = "$";
var x = decimal.Parse(
"$1,200",
NumberStyles.AllowCurrencySymbol | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands,
provider);
Je pense que ce serait génial comme aide html – griegs
Eh bien l'analyse normalement n'est pas un problème, mais j'ai un certain nombre de champs "d'argent" et je préfère pas d'ordure de mes contrôleurs analyser TryUpdateModel, si possible . –
@cadmium utilise un classeur modèle personnalisé, voir le lien dans ma réponse. – eglasius
réponse a été attribué à Freddy Rios depuis son lien m'a fourni la base pour le faire, mais le code avait besoin de fixer en place:
// http://www.crydust.be/blog/2009/07/30/custom-model-binder-to-avoid-decimal-separator-problems/
public class MoneyParsableModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext,
ModelBindingContext bindingContext)
{
object result = null;
// Added support for decimals and nullable types - c.
if (
bindingContext.ModelType == typeof(double)
|| bindingContext.ModelType == typeof(decimal)
|| bindingContext.ModelType == typeof(double?)
|| bindingContext.ModelType == typeof(decimal?)
)
{
string modelName = bindingContext.ModelName;
string attemptedValue = bindingContext.ValueProvider[modelName].AttemptedValue;
// Depending on cultureinfo the NumberDecimalSeparator can be "," or "."
// Both "." and "," should be accepted, but aren't.
string wantedSeperator = NumberFormatInfo.CurrentInfo.NumberDecimalSeparator;
string alternateSeperator = (wantedSeperator == "," ? "." : ",");
if (attemptedValue.IndexOf(wantedSeperator) == -1
&& attemptedValue.IndexOf(alternateSeperator) != -1)
{
attemptedValue = attemptedValue.Replace(alternateSeperator, wantedSeperator);
}
// If SetModelValue is not called it may result in a null-ref exception if the model is resused - c.
bindingContext.ModelState.SetModelValue(modelName, bindingContext.ValueProvider[modelName]);
try
{
// Added support for decimals and nullable types - c.
if (bindingContext.ModelType == typeof(double) || bindingContext.ModelType == typeof(double?))
{
result = double.Parse(attemptedValue, NumberStyles.Any);
}
else
{
result = decimal.Parse(attemptedValue, NumberStyles.Any);
}
}
catch (FormatException e)
{
bindingContext.ModelState.AddModelError(modelName, e);
}
}
else
{
result = base.BindModel(controllerContext, bindingContext);
}
return result;
}
}
Il est pas joli, mais travaux.
- 1. Excel 2007 - Format monétaire conditionnel
- 2. Convertir NVARCHAR en valeur monétaire
- 3. C# parfois format monétaire ne fonctionne pas
- 4. NVelocity - Affichage de la valeur monétaire
- 5. Comment formater une chaîne monétaire en entier?
- 6. comment puis-je imprimer le format monétaire en javascript
- 7. SQL: renvoie la valeur au format requis
- 8. Renvoie la valeur js au format HTML
- 9. Mise à jour du fournisseur de valeur avant TryUpdateModel
- 10. asp.net mvc: Valeur de retour TryUpdateModel ou ModelState.IsValid?
- 11. TryUpdateModel ne fonctionne pas
- 12. format date au format mysql
- 13. Les données au format Excel Time sont converties en valeur textuelle au format XML
- 14. Comment formater une valeur monétaire à partir d'un ISOCurrencySymbol en C#
- 15. Définir le format monétaire pour la cellule Excel créée avec ExcelPackage
- 16. NSXMLParser init avec XML au format NSString
- 17. Comment encoder une clé au format MIME
- 18. TryUpdateModel ne fonctionne pas avec Prefix et IncludeProperties
- 19. Valeur de retour UIDatePicker au format 24 heures
- 20. Prévention EF4 ConstraintException lors de l'appel TryUpdateModel
- 21. monnaie au format avec un symbole de devise au recto
- 22. convertir une chaîne au format UTF8
- 23. Javascript Obtenir une chaîne au format kb
- 24. Comment convertir date d'enregistrement au format chaîne au format Date
- 25. Obtenez le format monétaire pour un pays qui ne dispose pas d'une
- 26. Quel type Java utiliser pour représenter une valeur monétaire dans un service Web?
- 27. Comment valider qu'une zone de texte a une valeur monétaire valide entrée?
- 28. Calcul d'octets au format MB
- 29. format monétaire JExcelApi sur la cellule de formule - erreur de fichier
- 30. Sitemap au format XML ou au format XHTML?
Ai-je perdu la pile? Il ne semble pas que ça devrait être si difficile? –