[c#] 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 quick brown fox”표시된 값 : “The”
해결 방법은 다음과 같이 값 문에서 따옴표로 변수를 넣는 것입니다.
<input class="ParmInput" type="text" id="respondingRangerUnit" name="respondingRangerUnit"
onchange="validateInteger(this.value)" value="@ViewBag.respondingRangerUnit">
답변
최근 에 비슷한 문제가 발생 하여 Google이 저를 여기에 착륙 시켰으므로 다른 사람들도 여기에 착륙 할 경우를 대비하여이 답변을 여기에 넣었습니다.
나는 한 때 것으로 나타났습니다 심하게 HTML 포맷 , 실제로 가졌다 내 모든 html 태그가 밖으로 제거 와 함께, 단지 비 태그 내용이 남아 . 특히 여는 테이블 태그가 누락 된 테이블이 있었고 전체 문자열에서 내 모든 html 태그가 완전히 찢어졌습니다.
따라서 위의 방법이 작동하지 않고 여전히 머리를 긁적 이라면 html 이 유효한지 확인하십시오 .
나는 그것을 작동시킨 후에도 MVC가 내가없는 곳에 tbody 태그를 추가하고 있음을 알았습니다. 이것은 정리가 일어나고 있음을 알려주며 (MVC 5) 불가능할 때 모든 / 일부 태그를 제거합니다.