source

asp.net mvc 보기에서 문자열을 html로 표시

ittop 2023. 4. 27. 22:46
반응형

asp.net mvc 보기에서 문자열을 html로 표시

저는 html 마크업을 포함하는 문자열을 생성하는 컨트롤러를 가지고 있습니다.보기에 표시되면 모든 태그가 포함된 단순 문자열로 표시됩니다.

Html 도우미를 사용하여 인코딩/디코딩하여 제대로 표시하려고 했지만 작동하지 않습니다.

string str= "<a href="/Home/Profile/seeker">seeker</a> has applied to <a href="/Jobs/Details/9">Job</a> floated by you.</br>";

제 생각에는,

@Html.Encode(str)

사용하고 싶은 가까이에 있습니다.@Html.Raw(str)

@Html.Encode문자열을 사용하여 모든 특수 문자가 올바르게 처리되도록 합니다.여기에는 공백과 같은 문자가 포함됩니다.

다음을 사용해야 합니다.IHtmlString대신:

IHtmlString str = new HtmlString("<a href="/Home/Profile/seeker">seeker</a> has applied to <a href="/Jobs/Details/9">Job</a> floated by you.</br>");

HTML을 유지해야 하는 모델 속성이나 변수가 있을 때마다 일반적으로 이것이 더 나은 방법이라고 생각합니다.우선, 그것은 조금 더 깨끗합니다.예:

@Html.Raw(str)

비교:

@str

또한 사용하는 것보다 조금 더 안전하다고 생각합니다.@Html.Raw()당신의 데이터가 HTML인지 아닌지에 대한 관심은 당신의 컨트롤러에 보관되어 있습니다.프런트 엔드 개발자와 백엔드 개발자가 있는 환경에서는 백엔드 개발자가 HTML 값을 저장할 수 있는 데이터에 더 잘 적응할 수 있으므로 백엔드(컨트롤러)에서 이러한 우려를 유지할 수 있습니다.

저는 일반적으로 사용을 피하려고 합니다.Html.Raw()가급적이면 언제든지

한 가지 더 주목할 만한 것은, 당신이 어디에 할당하고 있는지 확실하지 않다는 것입니다.str하지만 당신이 이걸 어떻게 실행할지에 대해 제가 걱정하는 몇 가지 사항들이 있습니다.

첫째, 솔루션에 관계없이 컨트롤러에서 이 작업을 수행해야 합니다.IHtmlString또는Html.Raw) 당신의 관점에서 이와 같은 논리는 실제로 거기에 속하지 않기 때문에 피해야 합니다.

추가로, 당신은 당신의 것을 사용해야 합니다.ViewModel당신의 관점에 가치를 가져오기 위해 (그리고 다시, 이상적으로 사용하기 위해).IHtmlString속성 유형)으로 지정합니다.그런 것을 보는 것은@Html.Encode(str)당신이 단지 당신의 예를 단순화하기 위해 이 일을 한 것이 아니라면, 조금 걱정이 됩니다.

사용할 수 있습니다.@Html.Raw(str)

자세한 내용은 MSDN 참조

HTML로 인코딩되지 않은 마크업을 반환합니다.

이 메서드는 인코딩되지 않은 HTML을 렌더링하는 IHTmlString 클래스를 사용하여 HTML 마크업을 래핑합니다.

저는 MVC에서 HTML 입력 필드와 비슷한 문제가 있었습니다.웹 페이지에는 필드의 첫 번째 키워드만 표시됩니다.예: 입력 필드: "빠른 갈색 여우" 표시 값: "The"

해결책은 다음과 같이 값 문에 변수를 따옴표로 묶는 것이었습니다.

<input class="ParmInput" type="text" id="respondingRangerUnit" name="respondingRangerUnit"
       onchange="validateInteger(this.value)" value="@ViewBag.respondingRangerUnit">

저도 최근에 비슷한 문제가 있었는데, 구글이 저를 여기에 착륙시켰습니다. 그래서 다른 사람들도 여기에 착륙할 경우를 대비해서, 완성도를 높이기 위해 이 답을 여기에 넣었습니다.

제가 HTML을 잘못 포맷했을 때, 저는 실제로 모든 HTML 태그제거하고 태그가 아닌 내용만 남아 있다는 것을 깨달았습니다.저는 특히 테이블에 테이블 태그가 누락되었고, 전체 문자열에서 HTML 태그가 완전히 제거되었습니다.

따라서 위의 내용이 작동하지 않고 여전히 머리를 긁고 있다면 HTML이 유효한지도 확인하십시오.

제가 작동시킨 후에도 MVC는 제가 가지고 있지 않은 곳에 바디 태그를 추가하고 있었습니다.이 메시지는 정리 작업(MVC 5)이 발생하고 있으며, 발생할 수 없는 경우 모든/일부 태그를 제거한다는 것을 알려줍니다.

언급URL : https://stackoverflow.com/questions/19980657/display-string-as-html-in-asp-net-mvc-view

반응형