2012-09-13 2 views
2

HtmlGenericControl 개체의 InnerHTML 속성에 문제가 있습니다. InnerText 속성에 "<b> xx </b >"을 할당하면 InnerText 속성에 인코딩되고 인코딩됩니다. InnerHtml에 동일한 문자열을 할당하면 인코딩되지 않습니다. 나는 그것이 다른 포스트에서 여기에서 보았던 것에 반하는 것에 따라 혼란 스럽다.runat = server 및 InnerHtml html 태그가 인코딩 된 ASP.NET Div

배경 : 할당 할 문자열이 데이터베이스에서로드되어 수명 기간 동안 다른 여러 문자열에 할당 된 다음 Replace 메서드로 자리 표시자를 바꿉니다. 그럼에도 불구하고 그것은 포함 "<B> XX </B >를"나는 전체 프로세스를 무시하고 바로 뒤에 코드에서 "<B> XX </B >"문자열을 할당 절대적으로 확실하게하지 않고 인코딩 된 버전보다 ... - 결과를 여전히 동일하게 유지됩니다 (즉, 인코딩 됨).

누군가가 왜 이런 일이 발생했는지 설명해주세요. 내가 잘못하고있는 것은 무엇인가? 감사.

편집이 문제를 명확 100 %로 만들려면 : 나는 프로그래밍 방식 HTMLGenericControl 객체로 "<B> XX </B >"를 할당 할 필요가 를하고 HTML 태그로 렌더링하고 인코딩 된 텍스트가 아닌 있습니다. 화면에 "<b> xx </b >"이라는 글자가 표시됩니다. 원하지 않는 경우, 굵은 글자로보고 싶습니다. InnerHtml 속성에 문자열을 인코딩하지 않고 "있는 그대로"표시하면 해당 문서에 설명되어 있다고 생각했습니다. 그러나 그렇게 행동하지는 않습니다.

+0

나는이 문제를 잘 모르겠다. 자리 표시자를 대체하고있는 문자열이 인코딩되지 않았지만 자리 표시자가 인코딩 되었습니까? –

답변

2

상황에 따라 HTMLGenericControl을 ASP : Literal 컨트롤로 바꾸는 것이 가능하면 그렇게 할 것입니다.

방금 ​​CMS 시스템을 업그레이드 할 때와 비슷한 상황이 발생했습니다. 어떻게 처리 했는가?

+0

나는 당신이 제안한 것과 똑같은 일을했다. 감사. InnerHTML 속성으로 작업 할 때 HTML 태그를 인코딩하는 이유를 알고 있습니까? 문서에 html 태그를 인코딩하지 않는다는 내용이 적혀 있습니다. 나는 혼란 스럽다. – NeverStopLearning

+0

미안 나는 이유를 정말로 모른다. 서버 컨트롤을 쓸 때 그 트릭을 사용해야 할 것 같습니다. 어쩌면 다른 누군가가 그 이유를 게시 할 것입니다. 다행 이군! –

0
var sb = new StringBuilder(); 
editable.RenderControl(new HtmlTextWriter(new StringWriter(sb))); 
stringDiv = sb.ToString(); 
관련 문제