Подтвердить что ты не робот

Можно ли отобразить необработанный HTML-код из базы данных в ASP.NET MVC 3?

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

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

Это было найдено qaru.site/info/129207/... Когда я попробовал аналогичную бритву aproach, я закончил с этим:

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

@Html.GetSomeHtml()

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

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