안녕하세요. 김도명입니다.

이번 포스팅에서는 커스텀 필드 개발 중 SPFieldMultiLineText 형식의 필드인 경우 유의해야 할 사항 몇가지를 소개하도록 하겠습니다.

1. 필드 값(HTML)이 텍스트 형태로 표시되는 경우


아래와 같이 HTML이 적용된 상태로 표시가 되어야 하는데 실제 HTML 소스가 텍스트 형태로 표시되는 문제입니다.


이런 경우 SharePoint Designer를 이용하는 등의 방법으로 해당 필드를 랜더링할 때 사용되는 XSLT를 아래와 같이 수정합니다.
(SharePoint Designer를 이용하여 별도의 Form을 만든 경우 역시 동일.)

필드 값을 가져오는 부분에 disable-output-escaping="yes" 로 추가 설정하여 필드 값의 이스케이핑이 이루어 지지 않도록 합니다.



2. Visual Studio를 통한 커스텀 필드 개발

필드 개발 시 아래와 같이 SPFieldMultiLineText 클래스를 상속받아 개발하게 됩니다.


이때, 해당 필드의 RichTextMode를 설정할 수 있습니다.

'FullHtml'로 할 경우 리본 메뉴를 사용하게 되는 Enhanced Rich Text 타입 필드가 되고,
'Compatible'를 선택하거나 아무것도 선택하지 않은 경우 Rich Text 타입 필드가 됩니다.
(참고 : http://kdmsong.tistory.com/entry/Multiplelinesoftext)

또한, base.RichTexttrue로 설정해주어야 합니다.
해당 속성을 true로 선언하지 않은 경우 필드의 값은 Escaping 처리됩니다.

화면상에서 실제 HTML이 적용된 화면으로 보이지 않고, 텍스트로 '<div>테스트</div>'와 같은 형식으로 보여지게 됩니다.
이를 페이지의 소스보기 등을 통해 확인해 보면, 필드 값에 해당하는 HTML이 페이지 내에 삽입된 것이 아니라 아래와 같이 이스케이핑 처리된 문자열이 삽입된 것을 확인할 수 있습니다.



감사합니다.
신고
Posted by kdmsong

BLOG main image
http://SharePointSchool.net by kdmsong

분류 전체보기 (262)
SharePoint 2013 (1)
SharePoint 2010 (224)
MOSS 2007 (3)
SharePoint 세미나 (9)
Windows Azure (7)
IIS 6.0 ~ 8.0 (8)
개발자 기본 소양 (10)
Etc. (0)
Total : 402,644
Today : 51 Yesterday : 84
Statistics Graph

free counters