J'ai décimal? Montant p>
dans mon modèle, j'ai une valeur comme @ item.sales, que je tente d'écrire comme @ item.sales.tostring ("F2"). p>
I`M Avoir l'erreur d'erreur de message 1 Aucune surcharge pour la méthode 'Tostring' prend 1 arguments P>
Comment puis-je atteindre ce qui précède p>
4 Réponses :
Si c'est une décimale nullable, vous devez d'abord obtenir la valeur non nullable: bien sûr, qui lancera une exception si @ item.sales code > est en fait une valeur nulle, vous auriez donc besoin de vérifier cela en premier. p> p>
Yep, il suffit d'ajouter "si (@ item.sales.hasvalue) {... faire la conversion ...}"
Je n'ai pas la méthode de hasvalue à mon avis. Le message d'erreur est une erreur 1 'décimal' ne contient pas de définition pour «hasvalue» et aucune méthode d'extension 'HASVALUE' Accepter un premier argument de type 'décimal' (vous manque-t-il à la directive ou à une référence d'assemblage?)
@ user281180: Dans ce cas, votre valeur n'est pas i> de type décimale? Code> En premier lieu - Pourquoi avez-vous inclus le point d'interrogation au milieu de votre titre? Mais ensuite appelant Tostring ("F2") code> devrait être bien ...
@jon: la valeur est de type décimal ?. Le code @ item.sales.tostring ("F2") fonctionne bien s'il est de type décimal et non décimal?
@ user281180: Si la valeur est vraiment de type décimale? code> alors vous devriez pouvoir utiliser hasvalue code>. L'erreur du compilateur suggère fortement que le type est i> juste décimal code> plutôt que décimal? Code>. Quelle que soit i> @ item.sales.hasvalue code> ou i> @ item.sales.tostring ("F2") code> devrait travail. Vous n'essayez pas @ item.sales.value.hasvalue code> étiez-vous?
@Jon, je ne peux tout simplement pas obtenir th .hasvalue ... je manque de référence?
@ user281180: Non, mais ce n'est pas clair exactement i> Qu'est-ce que vous essayez. Est-ce que @ item.sales.value.tostring ("F2") code> travail?
Je peux difficilement accès à .value, cela me donne une erreur lorsque j'écris @ item.sales.value
@ user281180: Eh bien, c'est @ item.sales code> ou @ item.sales code>? C # est sensible à la casse.
if( item.Sales.HasValue )
{
item.Sales.Value.ToString(....)
}
else
{
//exception handling
}
Vous pouvez créer une méthode d'extension afin que le code principal soit plus simple et vous pouvez l'appeler comme ceci: p>
Utilisez le Unaire? opérateur à exécuter .tostring () uniquement lorsqu'il y a un objet ou utilisez le double ?? opérateur le rend donc non nullable: p> c'est mieux que @ item.sales.value.tostring ("F2") code> parce que si vous Ne vérifiez pas la valeur NULL avant d'utiliser .tostring ("F2") code> Le code se cassera au moment de l'exécution. P> P>
Ou si vous voulez laisser des valeurs nulles vierges; @ item.sales? .tostring ("F2") code>
Merci @jeremylakeman, je mettrai à jour ma réponse avec votre suggestion car elle utilise moins de code pour obtenir un effet similaire.