2012-07-31 54 views
3

似乎當設置爲多,服務頁面,XHTML是與ASP TextBox控件的一個問題。我正在開發的項目使用內容協商將asp頁面作爲application/xhtml + xml提供給支持它的瀏覽器。問題是,當asp文本框渲染一個textarea到頁面時,它顯式預先添加一個換行到文本。文本框的渲染方法的思考如下所示:天冬氨酸文本框XHTML和額外的換行符

if (TextMode == TextBoxMode.MultiLine) 
HttpUtility.HtmlEncode(Environment.NewLine + this.Text, (TextWriter) writer); 

當Firefox和Opera與XHTML內容類型爲這個,他們解釋換行符作爲textarea的文本的一部分,所以我得到了額外的新行我的文本區域的開始。

我可以繼承文本框,覆蓋渲染,但是,似乎是有點大材小用來糾正這樣的事情。有其他方法可以糾正嗎?有沒有人知道爲什麼ASP文本框呢呢?

回答

1

子類化的替代方法是使用控制適配器,或者寫<textarea手,讓ASP.NET爲您生成控件名稱屬性。

我懷疑ASP.NET的WebForms做短忽略這一點,只是因爲。無論如何,未來都是MVC,所以不要指望這一點很快就會改變。我懷疑換行符的最初目的是給textarea一個「價值」而不是什麼都沒有(從而使得textarea在HTML表單中「成功」)。

這是不是唯一的古怪行爲,你會在ASP.NET中看到。列表中還包含<head runat="server">的惡意HTML格式。

+0

我想我們會用,因爲它適用於所有我們現有的文字區域的控制適配器的方法去。不足之處在於所有渲染仍然需要重新實現,但我沒有看到很多解決方法。以前從未聽說過控制適配器,感謝他們指出。 – 2012-08-01 13:33:07