Eu tenho um controle de área de texto que aceita entrada. Mais tarde, estou tentando renderizar esse texto em uma exibição usando:
@ Model.CommentText
Isso está codificando corretamente quaisquer valores. No entanto, quero substituir os caracteres de quebra de linha <br />
e não consigo encontrar uma maneira de garantir que as novas tags br não sejam codificadas. Eu tentei usar HtmlString, mas ainda não tive sorte.
asp.net-mvc
asp.net-mvc-3
razor
bkaid
fonte
fonte
\n
no banco de dados e você deseja converter para um<br />
?Respostas:
Use a propriedade espaço em branco CSS em vez de se abrir para as vulnerabilidades XSS!
fonte
pre-line
(eu só sabianowrap
epre
).white-space: pre-wrap;
é melhor, poispre-line
irá mexer com o seu texto agrupando espaços em branco em um espaço.Tente o seguinte:
Atualizar:
De acordo com o
marcind's
comentário sobre essa questão relacionada , a equipe do ASP.NET MVC procura implementar algo semelhante ao mecanismo de exibição Razor<%:
e<%=
para o mesmo.Atualização 2:
Podemos transformar qualquer pergunta sobre codificação HTML em uma discussão sobre entradas prejudiciais do usuário, mas já existe o suficiente.
De qualquer forma, cuide de possíveis entradas prejudiciais do usuário.
Atualização 3 (Asp.Net MVC 3):
fonte
<script>
.\n
em vez de\r\n
Divida em novas linhas (independente do ambiente) e imprima regularmente - não precisa se preocupar com codificação ou xss:
(remover entradas vazias é opcional)
fonte
A terceira solução de Omar como auxiliar de HTML seria:
fonte
Aplicando o princípio DRY à solução do Omar, aqui está uma extensão HTML Helper:
Uso (com regex aprimorado):
Isso também tem o benefício adicional de colocar menos ônus no desenvolvedor do Razor View para garantir a segurança contra vulnerabilidades XSS.
Minha preocupação com a solução de Jacob é que processar as quebras de linha com CSS interrompe a semântica do HTML .
fonte
Eu precisava dividir algum texto em parágrafos (tags "p"), então criei um auxiliar simples usando algumas das recomendações das respostas anteriores (obrigado pessoal).
Uso:
fonte
Eu prefiro esse método, pois não requer emissão manual de marcação. Eu uso isso porque estou processando Razor Pages em seqüências de caracteres e enviando-as por email, que é um ambiente em que o estilo do espaço em branco nem sempre funciona.
fonte