2011-08-19 24 views
6

C# kullanarak bir asp.net sitesi (aslında, bir DotNetNuke modülü) yazıyorum. Kod arkasından, gerekli js değişkenini belirlediğim bir <script> etiketi oluşturmaya çalışıyorum, daha sonra bunu HMTL <head>'a ekleyin. Js var görüntü dosyaları için bir (literal) göreceli url dizisidir. Dizi dizeler içerdiğinden, her öğe tırnak içine alınmalıdır. Her dizi öğenin çevresindeki tırnak &quot; ile değiştirilir ediliyor yüzden sorunHtmlGenericControl, html kodlama içeriğinden nasıl korunur?

, <script> ve </script> arasındaki dize otomatik yere HTMLEncoded ediliyor. Bu, HtmlGenericControl oluşturulduğunda gerçekleşiyor gibi görünüyor. DotNetNuke suçlu olabilir mi? Birisi bir geçici çözüm önerebilir mi? (Benim kontrolünde Page_Load işleyicisinden çalıştıran)

Benim geçerli kod: düğümü değil ınnertext mülkiyet ait InnerHtml özelliği kullanılarak en

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); 
+1

Değişkenleriniz için daha küçük harfli adlar kullanmanızı öneririz. Bu okumak için kafa karıştırıcı. – Amy

+0

Bahşiş için teşekkürler. Gerçekten .net için kullanmıyorum ve gerçekleştirdikten sonra her şey için büyük harf kullanmaya başladım. Net geliştiriciler büyük harfle * nesne özelliği isimleri *. Sanırım bu bir düzeltme meselesi! – bfavaretto

cevap

14

bak.

InnerHtml özelliği, HTML karakterlerine ve özel karakterleri otomatik olarak kodlamaz. HTML varlıkları, bir tarayıcının normalde özel bir anlamı olduğu şeklinde yorumlayabileceği < karakteri gibi özel karakterleri görüntülemenize olanak tanır. < karakteri, bir etiketin başlangıcı olarak yorumlanacak ve sayfada görüntülenmeyecektir. < karakterini görüntülemek için < numaralı varlığı kullanmanız gerekir.

+0

Teşekkürler, bu hile yaptı. Soruyu göndermeden önce denedim ve bir şekilde işe yaramadı. Başka bir değişkenin izini kaybetmiş olmalıyım! Aptal ben! – bfavaretto

+0

+1: Bu benim için de çalıştı! –

İlgili konular