2011-05-09 21 views
6

我們有一個ASP:DropDownList中,我們填充ASP.NET 4.0的DropDownList與文本單引號

ddlBranch.Items.Add(new ListItem("TEST","This is a's test")); 

服務器端當此編譯和運行.NET下3.5中,我們看到文本「這是一個的測試」

然而,當這個被編譯並在.NET 4.0上運行,我們看到文本‘這是一個'氏試驗’

下面我們的web.config並沒有改變我們已經增加。

<pages controlRenderingCompatibilityVersion="3.5" /> 

暫且我們已經跌回.NET 3.5然而,我們想知道是否有解決此問題的方法,或者如果這是一個已知呈現的問題或者是由設計。

TIA

AJ

+0

大家好 感謝您的答覆,他們使我更深入地尋找一個編碼某處的代碼。原來這是: Server.HtmlEncode(輸入) 在基本頁面類中的所有控件上執行。請參閱http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes HtmlEncode和UrlEncode現在編碼單引號關於.NET 4中的更改,現在它可以識別HTMLEncode中的單引號。感謝大家的所有意見。 – AnthonyJ 2011-05-09 06:12:21

回答

2

嗨全部
感謝您的回覆,他們讓我更深入地瞭解尋找Encode的代碼。原來,這是一個:

Server.HtmlEncode(input) 

正在執行基本頁面類中的所有控件。

現在我覺得這是一個問題真的原來是RTFM的情況下,對我而言

http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes
的HTMLEncode和以UrlEncode現在編碼單引號

在ASP.NET 4 ,HttpUtility和> HttpServerUtility類的HtmlEncode和UrlEncode方法已更新,以便按如下方式對單引號字符>(')進行編碼:

HtmlEncode方法對instan單引號的ces爲'。 UrlEncode方法將單引號的實例編碼爲%27。

所以當我使用.NET3.5時,我的單引號(')被HtmlEncode忽略,但是當切換到.NET 4.0時,它並沒有被HtmlEncode忽略。

再次感謝人們提出的所有迴應和工作。

問候

AJ

0

當你值回你可以只HTMLDecode選擇的值。

即。 Server.HtmlDecode(ddlBranch.SelectedValue)

+0

您實際上不必在代碼隱藏中將其解碼。 DropDownList控件將爲你處理。 – rsbarro 2011-05-09 03:54:13

0

爲什麼你認爲這是一個問題? &#39;呈現爲撇號,並且如果選擇該值,則發佈時將變成撇號。