Eu tenho um aplicativo MVC3 que possui uma página de detalhes. Como parte disso, tenho uma descrição (recuperada de um banco de dados) que possui espaços e novas linhas. Quando é renderizada, as novas linhas e espaços são ignorados pelo html. Gostaria de codificar esses espaços e novas linhas para que não sejam ignorados.
Como você faz isso?
Eu tentei HTML.Encode, mas acabou exibindo a codificação (e nem mesmo nos espaços e nas novas linhas, mas em alguns outros caracteres especiais)
html
css
newline
whitespace
line-breaks
Dan dot net
fonte
fonte
Respostas:
Apenas estilize o conteúdo com
white-space: pre-wrap;
.fonte
white-space: pre-line;
se você não quiser a primeira linha de cada parágrafo recuado.você já tentou usar
<pre>
tag.http://jsfiddle.net/NweRa/
fonte
Você pode usar espaço em branco: pré-linha para preservar quebras de linha na formatação. Não há necessidade de inserir manualmente elementos html.
ou adicione ao seu elemento html
style="white-space: pre-line;"
fonte
Você deseja substituir todos os espaços por
&nbsp;
(espaço sem quebra) e todas as novas linhas\n
por<<b></b>br>
(quebra de linha em html). Isso deve alcançar o resultado que você está procurando.Algo dessa natureza.
fonte
Eu estava tentando a
white-space: pre-wrap;
técnica declarada por pete, mas se a corda era contínua e longa, acabava de sair do contêiner e não entortava por qualquer motivo, não tinha muito tempo para investigar .. mas se você também estiver tendo o mesmo problema, acabei usando as<pre>
tags e os seguintes css e estava tudo bem para ir ..fonte
Como você mencionou na resposta do @Developer, provavelmente codificaria o HTML na entrada do usuário. Se você está preocupado com o XSS, provavelmente nunca precisará da entrada do usuário em sua forma original, para que possa escapar dela (e substituir espaços e novas linhas enquanto estiver fazendo isso).
Observe que escapar na entrada significa que você deve usar @ Html.Raw ou criar um MvcHtmlString para renderizar essa entrada específica.
Você também pode tentar
mas acho que também não vai escapar dos espaços. Então, nesse caso, sugiro apenas fazer um .NET
na entrada do usuário. E se você quiser se aprofundar na usabilidade, talvez possa fazer uma análise XML da entrada do usuário (ou brincar com expressões regulares) para permitir apenas um conjunto predefinido de tags. Por exemplo, permita
... mas não permita
fonte
Quebra a descrição em um
textarea
elemento.fonte
Existe uma maneira simples de fazer isso. Eu tentei no meu aplicativo e funcionou muito bem.
Basta digitar: $ text = $ row ["text"]; eco nl2br ($ text);
fonte