2010-09-13 6 views
1

Dans asp.net vue mvc 2 j'essaie de rendre quelque chose si c'est vrai.Html.Encode ne fonctionne pas au moins pas comme je le pense devrait

Dans le code ci-dessous j'essaie d'utiliser Html.Encode (x) pour rendre la valeur dans la page mais il ne rend rien. Quel est le problème avec if déclaration avec html.encode?

Travaux

<%if (!ViewData.ContainsKey("DisplayQtyPrice")) {%> 
    <%: entry.Amount %> 
    <%}%> 

ne fonctionne pas

<%if (!ViewData.ContainsKey("DisplayQtyPrice")) { 
    Html.Encode(entry.Amount); 
    }%> 

Répondre

3

Le problème est que vous n'êtes pas d'ajouter quoi que ce soit au flux de réponse. Il n'y a rien de mal à Html.Encode, mais vous devez faire quelque chose comme ceci:

<%if (!ViewData.ContainsKey("DisplayQtyPrice")) { 
    Response.Write(Html.Encode(entry.Amount)); 
}%> 

EDIT: Cela dit, je pense que votre première version est meilleure, sauf si vous avez un problème avec crochets :)

+0

équerres aucun problème, c'est juste épineux laid regardant, ne peut pas montrer le code à l'enfant sinon je perds mes droits à me plaindre de leur écriture :) – mamu

+0

Juste pour clarifier la réponse ci-dessus: <% = expression%> est un raccourci pour exactement Response.Write (expression) –

4

Vous appelez Html.Encode dans un bloc de code, mais cela ne signifie pas que le résultat est en cours d'écriture dans le flux de sortie. Essayez:

<%if (!ViewData.ContainsKey("DisplayQtyPrice")) {%> 
    <%= Html.Encode(entry.Amount) %> 
<%}%> 

ou moins

<%= ViewData.ContainsKey("DisplayQtyPrice") ? null : Html.Encode(entry.Amount) %> 
+0

Je pense que <%: entry.Amount%> est le même que ce que vous avez suggéré dans le premier bloc de code, et oui c'est la bonne façon de le faire – mamu

0

Si vous utilisez Visual studio 2008 et/ou .NET 3.5, vous devez encoder votre sortie comme ceci:

Avoir à faire est partout est un glisser les développeurs .NET heureusement simplifié assurer votre sécurité HTML dans .NET 4 en supprimant ce besoin tout à fait avec la syntaxe:

Il est simplement une amélioration de la facilité d'utilisation; lire this pour le crédit Jedi complet:

Questions connexes