2010-11-24 33 views

Répondre

9

Vous pouvez simplement utiliser

HttpUtility.HtmlEncode("<br />"); 

Avoir un look here pour plus de détails.

EDIT:

Je suis désolé, mais je ne comprenais pas la question au début. Je pensais que tu voulais encoder la chaîne passée. Parfois, j'ai lu la question trop vite :)

De toute façon, pour répondre complètement à votre question jetez un oeil à ces échantillons. Supposons que dans votre action que vous avez:

[HttpGet] 
public virtual ActionResult Index() { 
    ViewData["Message"] = "This is a test." + "<br />" + "Does it work?"; 
    return View(); 
} 

Et, selon vous, vous avez

<p>Sample 1: <br /><%= ViewData["Message"]%></p> 
<p>Sample 2: <br /><%: ViewData["Message"]%></p> 

Notez la différence entre les deux construction. Vous obtiendrez les résultats suivants:

Sample 1: 
This is a test. 
Does it work? 

Sample 2: 
This is a test.<br />Does it work? 

Ainsi, le premier exemple d'utilisation répond à votre question. La clé est simplement de ne pas encoder la chaîne par opposition à ce que j'ai compris au début. La deuxième construction, celle qui utilise <%: %>, disponible si vous utilisez .NET 4.0, automatiquement encoder chaque chaîne qu'il rend.

Si vous souhaitez toujours utiliser cette dernière construction et éviter que la chaîne soit codée, vous devez utiliser une astuce. Dites simplement à la construction que la chaîne est déjà encodée et qu'elle n'a pas besoin d'être recodée. Pour y parvenir en utilisant ce code exemple

[HttpGet] 
public virtual ActionResult Index() { 
    ViewData["Message2"] = MvcHtmlString.Create("This is a test." + "<br />" + "Does it work?"); 
    return View(); 
} 

et dans la vue utilisent normalement le <%: %> construire

<p>Sample 3: <br /><%: ViewData["Message2"]%></p> 

Pour plus de détails sur l'utilisation du MvcHtmlString et comment il fonctionne s'il vous plaît se référer à ce question sur le SO.

Ciao!

+0

ne pas oublier de marquer la question a répondu comme vous le sentez! – Lorenzo

+0

C'était l'une des premières choses que j'ai essayé mais qui n'a jamais fonctionné. ViewData ["Message"] = "Ceci est un test." + HttpUtility.HtmlEncode ("
") + "Cela fonctionne-t-il?"; Affichages >> Ceci est un test. <br> Cela fonctionne-t-il? Même si j'ajoute HttpUtility.HtmlDecode sur la vue qui affiche le message réel et que je reçois >> Ceci est un test.
Ça marche? ...hummm –

+0

Grazie Lorenzo ... qui a fonctionné parfaitement !!! BTW, cela fonctionne bien avec
mais PAS avec \ r \ n –

0

Avez-vous essayé \ n ou \ r dans la chaîne ViewData lui-même?

+0

C'est l'une des premières choses que j'ai essayé .. mais n'a pas fonctionné –