2012-10-10 2 views
0

전 인터넷을 수 일 동안 검색 한 결과 행운을 찾지 못했습니다.면도기 마크 업을보고 처리하는 방법

내 모델에는 면도기 마크 업이 포함 된 html 청크가 들어있는 속성이 있습니다. exmaple : 뷰에서

public class ViewModel 
{ 
    public string Content = "<div>@Html.TextBox(\"UserName\")</div>"; 
} 

, 나는 콘텐츠 모델을 통해 삭제하기 때문에 비록

@Html.Raw(Server.HtmlDecode(Model.Content).toString()) 

로 내가는, HTML로 면도기 마크 업을 변환 할 수 있어야한다는 표시 뷰 엔진이 처리하지 않습니다.

  • 그냥 .Raw (Model.Content), .Encode (Model.Content)를 사용하여 Content에서 간단히 삭제하려고했지만 아무것도 작동하지 않습니다.

의견이 있으십니까?

+0

MVC 프레임 워크의 모든 목적에 반대하는 것처럼 보입니다. 왜 모델에서 실제 데이터를 전달하고보기에서 해당 데이터를 사용하여 마크 업을 만듭니 까? – aserwin

+0

좋은 점은 프로젝트에서 자세히 설명합니다. 사이트는 부분 뷰의 전체 내용을 데이터베이스에 저장하고 요청시로드되도록 페이지 편집기를 사용합니다. 따라서 면도기 마크 업이 포함 된 문자열을 데이터베이스에서 읽을 수 있어야합니다. – Neovivacity

+0

DB에 저장하기 전에 면도기를 HTML로 디코딩해야한다고 생각합니다. –

답변

1

면도날 코드를 구문 분석하고 실행할 수있는 RazorEngine 패키지를 사용할 수 있습니다. 이것은 사용자에게 면도기 템플릿을 직접 편집 할 수있는 권한을 부여하지 않는 것이 좋습니다. 웹 사이트에 거대한 보안 구멍을 열었습니다.

사용자 입력을 신뢰하지 않는 시나리오에 더 적합한 예를 들어 DotLiquid과 같은 다른 템플릿 엔진이 있습니다.

관련 문제