2013-01-04 78 views
0

我有以下GetText()功能,這關係到我的問題,這是被稱爲在以下地方:奇怪的標籤

myGridView.DataSource = stuff.Select(s => new 
{ 
    //...some stuff here 
    f.Text = GetText(); 
} 
myGridView.DataBind(); 

的getText如下所示:

private void string GetText() 
{ 
    StringBuilder sb = new StringBuilder(); 
sb.Append("<abbr title=\"Testing\">"); 
    sp.Append("This is the Text that I want to display"); 
sb.Append("<\abbr>"); 
} 

所以基本上,我想要做的就是能夠在我的網頁上具有以下HTML:

<abbr title="Testing">This is the text that I want to display</abbr> 

然而,有一個神祕的標籤顯示出來。在谷歌瀏覽器,我看了個控制檯,我看到它是這樣的:

<abbr title="Testing">This is the text that I want to display<bbr></abbr> 

還有就是當我行sb.Append("<\abbr>"); 當我刪除了這一行這是固定的添加會產生多餘的標籤,但我想找到更好的解決方案,因爲這會使代碼看起來很尷尬。

我也試着做下面的代替多行sb.Appends(),但額外的文本仍然顯示。

sb.Append(string.Format("<abbr title=\"testing\">{0}<\abbr>",Text)); 

注意:假設文本是等於說我要顯示的文本字符串。

回答

1

這裏是如何你的方法建議立即進行刪除喜歡

private string GetText() 
    { 
     StringBuilder sb = new StringBuilder(); 
     sb.Append("<abbr title=\"Testing\">"); 
     sb.Append("This is the Text that I want to display"); 
     sb.Append("</abbr>"); 

     return sb.ToString(); 
    } 

「\」是轉義字符:)

2

使用

sb.Append("</abbr>"); 

大概\abbr被解釋爲轉義字符\a其次bbr>文本

順便說一句,看着at the escape sequences on MSDN似乎\a是貝爾字符轉義序列。 (不,我不認爲你應該聽到你的電腦發出嗶嗶聲)

2

你的結束標記是錯誤的。它應該是</abbr>而不是<\abbr>

<\abbr>將在<bbr>內包含轉義的a(這意味着什麼)。 Chrome顯然關閉了<abbr>標籤。所以多餘的標籤實際上是</abbr>而不是<bbr>

1

只是一個猜測,但它是因爲你的結束標記中有反斜槓而不是斜槓?

sb.Append("<\abbr>"); 

VS

sb.Append("</abbr>"); 
1

正如其他人所說,這是問題:

sb.Append("<\abbr>"); 

...但它是值得看的究竟發生了什麼。

這是追加<,然後U + 0007(「警戒」字符,或鍾),然後bbr>。如果您使用不是的字符完成此操作,則可以使用有效的轉義字符(例如,"<\zfoo>"),那麼你會收到一個編譯時錯誤。在其他一些情況下,您可能已經能夠在HTML中看到它。只是因爲你選了一個完全看不見的控制角色,所以很難看清。

順便說一句,我不認爲我有有史以來看到一個C#程序需要\a。我想這是不是一個有效的轉義字符 - 與\x六角序列一起...