2010-12-01 6 views
5

Désolé pour une question de débutant.MVC - Passer ViewData en tant que booléen

Lors du passage de la valeur booléenne du contrôleur à la vue à l'aide de ViewData, comment puis-je le récupérer en tant que valeur booléenne dans javascript? exemple:

Controller:

ViewData["login"] = true; 

Voir

<script type="text/javascript"> 
var login = <%= (bool)ViewData["Login"] %>; /// this doesn't work, throw javascript error; 
</script> 

Yeh je peux sûrement faire

<script type="text/javascript"> 
var login = '<%= ViewData["Login"] %>'; /// now login is a string 'True' 
</script> 

mais je garde plutôt l'objet de connexion comme booléen plutôt une chaîne si c'est possible

Merci!

Répondre

5

Supprimez simplement les guillemets simples.

<script type="text/javascript"> 
    var login = <%= (bool)ViewData["Login"] ? "true" : "false" %>; 
</script> 

Cela se traduira par:

var login = true; 

qui sera analysé comme un booléen dans le navigateur.

+0

Tricky un mais ça marche! Merci Jan ~ – BeCool

0

Je crois que vous pouvez le faire:

<script type="text/javascript"> 
    var login = new Boolean(<%= (bool)ViewData["Login"] ? "true" : "false" %>); 
</script> 

edit: en fait la première façon dont je l'avais ne fonctionnerait pas. Les valeurs true/false transmises à Boolean() doivent être en minuscules pour que cela fonctionne.

Questions connexes