C#을 사용하여 asp.net 사이트 (실제로는 DotNetNuke 모듈)를 작성하고 있습니다. 코드 숨김에서 필자는 필요한 js 변수를 설정 한 다음 태그를 만들고이 태그를 HMTL <head>
에 추가하려고합니다. js var은 이미지 파일에 대한 상대 URL의 (리터럴) 배열입니다. 배열에는 문자열이 포함되어 있으므로 각 항목을 따옴표로 묶어야합니다.HtmlGenericControl에서 html 인코딩 콘텐츠를 보호하는 방법은 무엇입니까?
<script>
과 </script>
사이의 문자열이 어딘가에 자동으로 HtmlEncoded되어 각 배열 항목 주위의 따옴표가 "
으로 바뀝니다. 이는 HtmlGenericControl
이 렌더링 될 때 발생하는 것으로 보입니다. DotNetNuke가 범인이 될 수 있습니까? 누군가가 대안을 제안 할 수 있습니까? (내 컨트롤에 Page_Load
핸들러에서 실행)
내 현재 코드 : 노드가 아닌 innerText와 속성의 InnerHtml 속성을 사용하여에
HtmlGenericControl PreviewDataScriptTag = new HtmlGenericControl("script");
PreviewDataScriptTag.Attributes.Add("type", "text/javascript");
StringBuilder PreviewDataScriptCode = new StringBuilder();
PreviewDataScriptCode.Append("var preview_imgs = [");
string pathPrefix = @"""";
string pathSuffix = @""",";
foreach (string path in this.DocPreviewImages)
{
PreviewDataScriptCode.Append(pathPrefix + PreviewUrlBase + Path.GetFileName(path) + pathSuffix);
}
// Remove last comma from js code
PreviewDataScriptCode.Remove(PreviewDataScriptCode.Length-1, 1);
PreviewDataScriptCode.Append("];");
PreviewDataScriptTag.InnerText = PreviewDataScriptCode.ToString();
Page.Header.Controls.Add(PreviewDataScriptTag);
변수에 소문자로 사용하는 것이 좋습니다. 이것은 읽기가 혼란 스럽습니다. – Amy
팁 주셔서 감사. 나는 .net에 익숙하지 않고, 대문자를 사용하기 시작했다. 닷넷 개발자는 대문자 * 객체 속성 이름을 사용하는 경향이있다. 나는 그것이 과도한 경우라고 생각합니다! – bfavaretto