Можно ли отображать сырой HTML из базы данных в ASP.NET MVC 3? - PullRequest
43 голосов
/ 25 января 2011

У меня есть таблица в моей базе данных, где одним из свойств является страница Html (без тегов html, head и body), и я намереваюсь поместить ее в середину одного из моих представлений - скажем, я называюМетод cotroller, который принимает аргумент и возвращает представление, передающее эту большую HTML-строку в качестве модели.Я искал его (немного, я признаю) и нашел следующий метод:

<%= System.Web.HttpUtility.HtmlDecode(yourEncodedHtmlFromYouDatabase) %>

Это было найдено здесь в stackoverflow. Когда я попробовал подобный подход к бритве, я закончилс этим:

@System.Web.HttpUtility.HtmlDecode("<h1>Test</h1>")

Это идея, но она не сработала так, как я планировал.

Ответы [ 2 ]

87 голосов
/ 25 января 2011

Все, что вам нужно, это: @Html.Raw(yourEncodedHtmlFromYouDatabase)

Я предполагаю, что HTML в базе данных был должным образом очищен (или, по крайней мере, из надежного источника), потому что если нет, вы могли бы открыть себядо межсайтовых скриптовых атак.

Причина, по которой ваш подход не сработал, заключается в том, что Razor HTML-кодирует вывод по умолчанию (каждый раз, когда вы используете @ для отображения чего-либо).Html.Raw сообщает Razor, что вы доверяете HTML и хотите отображать его без его кодирования (так как это уже необработанный HTML).

11 голосов
/ 15 октября 2011

Вы также можете вернуть HTMLString, и Razor выведет правильное форматирование, например.

@Html.GetSomeHtml()

public static HtmlString GetSomeHtml()
{
    var Data = "abc<br/>123";
    return new HtmlString(Data);
}

Это позволит вам отображать HTML

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...