2013-04-15 3 views
2

확실하지 어떻게 가능하지만, 나는 수업이있는 경우 :C# 문자열 속성에 HTML 태그를 삽입하려면 어떻게해야합니까?

public string TextNotIncluded 
{ 
    get 
    { 
     return ("which is <u>not</u> included in the Quote"); 
    } 
} 
<u>

</u>이 단어가 밑줄이되지 않는 것이 아니라, 내보기에 표시되고있다. 나는 C#에 익숙하지 않다.

누구든지 빠른 답변을 제공 할 수 있습니까?

감사합니다.

편집 : @MyClass.TextNotIncluded :

난 그냥 thusly 히 내보기에이를 호출하고있다. @Html.Raw으로 감싸는 것은 수십보기를 통해 뿌려 졌기 때문에 제 경우에는 효율적이지 않습니다.

@Html.Raw(TextNotIncluded) 

이 도우미는 HTML 입력을 인코딩, 그래서 그것을 사용할 때 조심하지 않습니다

+0

그것은 당신이 그 문자열을 출력하고 제어하는 ​​것을 따라 나는 무엇이든 당신이 HTML 마크 업을 구문 분석하지 않습니다 사용하고 추측에는 요. . – tnw

+1

MVC보기 또는 컨트롤러 –

답변

9

근본적으로 잘못된 것은 없지만 예상대로 렌더링되지는 않습니다.

다른 사람들이 제안한대로 @Html.Raw을 사용할 수 있지만 html이 포함될 수 있음을 나타내는 방식으로 명시 적으로 모델을 선언하는 것이 더 좋습니다. 당신은 아마이 대신의 MvcHtmlString 클래스를 사용하려면 :

public MvcHtmlString TextNotIncluded 
{ 
    get { return MvcHtmlString.Create("which is <u>not</u> included in the Quote"); } 
} 

그런 다음보기에 당신은 사용할 수 있습니다

당신은 HTML에 필요한
@Model.TextNotIncluded 
+0

+1 속성의 반환 유형을 변경하려면 어쨌든 html로 돌아가므로 소스에서 변경을 투표 할 수도 있습니다. – Silvermind

+1

메모는 모델이 MVC 프로젝트에만 해당한다고 가정합니다. 모델이 DTO 또는 데이터 레이어에있는 경우 속성이 'MvcHtmlString'인 것은 이해할 수 없습니다. –

+0

감사합니다. 또한 모든 응답 덕분에. @ p.s.w.g의 대답은 내 모델에서 선언을위한 건전한 추론을 제공한다는 점에서 가장 완벽했습니다 (또한이 코드를 100 회 사용하면 기술적으로 코드/문자가 적음). +1 다른 모든 좋은 제안. – REMESQ

4

출력 원시 HTML까지, Raw HTML 도우미를 사용합니다. 당신이 면도기를 사용하는 경우

+0

+1에서 "주의하십시오"부분에서이 속성을 사용하는 방법을 보여줍니다. 원시 HTML은 텍스트가 사용자 생성 된 경우 가능한 공격을합니다. –

7

는, 문자열은 기본적으로 HTML로 인코딩된다 - 당신이 인코딩 해제 Html.Raw를 사용해야합니다 : 당신이 사용하는 것과 ASPX 엔진에서

@Html.Raw(x.TextNotIncluded) 

<%= %>

<%= x.TextNotIncluded %> - this gives you the raw text 
<%: x.TextNotIncluded %> - this HTML-encodes your text - you don't want this. 
1

문자열을 인코딩합니다. 대부분 MVC 방식을 추천하고 있지만 프리젠 테이션 레이어와 더 독립적으로 만들 것입니다.

public string TextNotIncluded { 
    get { 
     return System.Web.HttpUtility.HtmlEncode("which is <u>not</u> included in the Quote"); 
    } 
} 
+0

이것은 역경입니다. 이렇게하면 속성 값이'<u>이 아닌 </u > '이됩니다. 페이지에 그 값을 넣으려고하면 더블 인코딩이나 일반 텍스트로 표시되지만, 그것을 밑줄 친 텍스트로 보아라. –

1

당신은 당신의보기에서 하나

@Html.Raw(Model.TextNotIncluded) 

또는

@MvcHtmlString.Create(Model.TextNotIncluded) 

를 사용할 수 있습니다.

그러나 재산의 반환 형식을 변경하는 것이 좋습니다 것 :

public MvcHtmlString TextNotIncluded 
{ 
    get 
    { 
     return MvcHtmlString.Create("which is <u>not</u> included in the Quote"); 
    } 
} 
+0

감사합니다. 기본적으로 @ p.sw.w.g와 같은 대답이지만, 먼저 오게되었습니다. – REMESQ

관련 문제