[asp.net-mvc-3] Razor로 인코딩 된 HTML 표시

인코딩 된 HTML을 데이터베이스에 저장합니다.

올바르게 표시 할 수있는 유일한 방법은 다음과 같습니다.

<div class='content'>
   @MvcHtmlString.Create(HttpUtility.HtmlDecode(Model.Content));
</div>

못 생겼어. 이 작업을 수행하는 더 좋은 방법이 있습니까?



답변

이 시도:

<div class='content'>
   @Html.Raw(HttpUtility.HtmlDecode(Model.Content))
</div>


답변

사용 Html.Raw(). Phil Haack은 http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx에 멋진 구문 가이드를 게시했습니다 .

<div class='content'>
    @Html.Raw( Model.Content )
</div>


답변

이것은 매우 간단합니다.

HttpUtility.HtmlDecode(Model.Content)

또 다른 솔루션은 HTMLString을 반환 할 수도 있습니다. Razor는 올바른 형식을 출력합니다.

보기 자체에서 :

@Html.GetSomeHtml()

컨트롤러에서 :

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


답변

단순히 HtmlString수업을 사용할 수도 있습니다.

    @(new HtmlString(Model.Content))


답변

인코딩 된 HTML을 데이터베이스에 저장합니다.

Imho 데이터베이스에 HTML 인코딩 된 데이터를 저장해서는 안됩니다. 일반 텍스트 (인코딩되지 않음)로 저장하고 다음과 같이 데이터를 표시하면 html이 자동으로 인코딩됩니다.

<div class='content'>
    @Model.Content
</div>


답변

백 슬래시를 표시 할 다른 케이스가 있습니다. \Razor 및 Java Script로 .

@Model.AreaName모습은 Name1 \ Name2 \ Name3 이므로 표시 할 때 모든 백 슬래시가 사라지고 Name1Name2Name3이 표시 됩니다.

해결 방법을 찾았습니다.

var areafullName =  JSON.parse("@Html.Raw(HttpUtility.JavaScriptStringEncode(JsonConvert.SerializeObject(Model.AreaName)))");

페이지 @using Newtonsoft.Json상단에 추가 하는 것을 잊지 마십시오 chtml.


답변