2016-02-05 1 views
-2

Je veux juste convertir session [ « Prix »] en décimal et convertir session [ « count »] en entierChaîne d'entrée n'a pas été dans un bon format MVC

 doc.Price = Convert.ToDecimal(Session["Price"]); 
     doc.Count = Convert.ToInt16(Session["Count"]); 

Je reçois cette erreur enter image description here

+0

Il est clair que la valeur de 'Session [" Price "]' ne peut pas être directement convertie en un nombre décimal. – David

+1

Que pensez-vous qu'il se passera si la variable de session n'est pas définie, ou est une chaîne vide ou n'est pas une valeur numérique. S'il vous plaît utilisez votre débogueur et vous trouverez la raison en un rien de temps – Steve

Répondre

0
var stringValue = Session["Price"].ToString(); 
if(!string.IsNullOrEmpty(stringValue)) { 
    try { 
     doc.Price = Convert.ToDecimal(stringValue); 
    } 
    catch(formatExecption ex) { 
     // Should not have gotten here because the frontend should gaurd against input values that are not number but anyway 
     throw new ValidationExecption("Price is not a number"); 
} 

Ce problème que vous avez ici dans son ensemble, c'est que vous ne pratiquez pas le codage défensif. Allez apprendre le codage défensif et améliorez la qualité de votre code