Ho un'applicazione ASP.NET MVC-4 con questo campo di valuta:Come posso convalidare un campo di valuta?
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}", ConvertEmptyStringToNull = true)]
[DataType(DataType.Currency)]
public decimal? Price { get; set; }
Questa è la parte corrispondente a mio avviso:
@Html.EditorFor(model => model.Price)
@Html.ValidationMessageFor(model => model.Price)
Se il prezzo è di 100 Euro il campo di testo in la visualizzazione mostra:
100,00 €
Questo è bello.
Ma io sto avendo problemi non appena provo a fare un postback. Il validatore si apre e dice che il campo del prezzo deve essere un numero.
posso risolvere solo in questo caso (1) a cancellare il simbolo € e (2) Sostituire il separatore decimale (sostituire virgola con un punto).
Se non c'è soluzione migliore, Credo che avrei potuto cambiare il DataFormatString = "{0: F2}" al fine di evitare il simbolo di valuta.
Ma come faccio a fare in modo che il validatore accetti la virgola come separatore decimale invece del punto (americano)?
Grazie per il vostro aiuto, ragazzi!
Penso che sia necessario creare un raccoglitore modello personalizzato, controllare questo collegamento http://haacked.com/archive/2011/03/19/fixing-binding-to-decimals.aspx – Overmachine
@Overmachine: Grazie per il tuo commento. Ma non credo che ModelBinder risolverà il problema del validatore. In altre parole: desidero ancora la convalida del client e il validatore continuerà a fallire (con o senza ModelBinder), sbaglio? – Ingmar
la validazione del client funzionerà ancora, il problema è quando si fa il post, sta inviando il simbolo della valuta. – Overmachine