Mam kontrolkę textarea, która przyjmuje dane wejściowe. Próbuję później renderować ten tekst do widoku, używając po prostu:
@ Model.CommentText
To poprawnie koduje dowolne wartości. Chcę jednak zastąpić znaki podziału wiersza <br />
i nie mogę znaleźć sposobu, aby upewnić się, że nowe znaczniki br nie zostaną zakodowane. Próbowałem użyć HtmlString, ale nie miałem jeszcze szczęścia.
asp.net-mvc
asp.net-mvc-3
razor
bkaid
źródło
źródło
\n
w bazie danych i chcesz przekonwertować na<br />
?Odpowiedzi:
Skorzystaj z właściwości białych znaków CSS zamiast otwierać się na luki w XSS!
źródło
pre-line
(byłem tylko świadomynowrap
ipre
).white-space: pre-wrap;
jest lepszy, ponieważpre-line
będzie bałagan z tekstem, grupując białe spacje w jednym miejscu.Spróbuj wykonać następujące czynności:
Aktualizacja:
Według
marcind's
komentarza na ten powiązane pytanie , zespół ASP.NET MVC szuka zaimplementować coś podobnego do<%:
i<%=
na widok silnika Razor.Aktualizacja 2:
Możemy zamienić dowolne pytanie dotyczące kodowania HTML w dyskusję na temat szkodliwych danych wprowadzanych przez użytkowników, ale wystarczająco dużo tego już istnieje.
W każdym razie, zadbaj o potencjalnie szkodliwy wkład użytkownika.
Aktualizacja 3 (Asp.Net MVC 3):
źródło
<script>
.\n
zamiast\r\n
Podziel na nowe wiersze (bez względu na środowisko) i drukuj regularnie - nie musisz martwić się o kodowanie lub xss:
(remove empty entries is optional)
źródło
Trzecie rozwiązanie Omara jako pomocnika HTML to:
źródło
Stosując zasadę DRY do rozwiązania Omara, oto rozszerzenie HTML Helper:
Użycie (z ulepszonym wyrażeniem regularnym):
Ma to również tę dodatkową zaletę, że nakłada mniej obciążenia na programistę Razor View, aby zapewnić bezpieczeństwo przed lukami w zabezpieczeniach XSS.
Obawiam się, że rozwiązanie Jacoba polega na tym, że renderowanie podziałów linii za pomocą CSS przerywa semantykę HTML .
źródło
Musiałem podzielić trochę tekstu na akapity (tagi „p”), więc stworzyłem prostego pomocnika, korzystając z niektórych zaleceń z poprzednich odpowiedzi (dziękuję wam).
Stosowanie:
źródło
Wolę tę metodę, ponieważ nie wymaga ręcznego emitowania znaczników. Używam tego, ponieważ renderuję Strony Razor na ciągi i wysyłam je pocztą e-mail, co jest środowiskiem, w którym styl białych znaków nie zawsze działa.
źródło