ASP.NET中使用者輸入文本的HTML解析辦法

來源:互聯網
上載者:User
網頁中用TextBox讓使用者輸入文本,然後存入資料庫,再從資料庫中讀出顯示在頁面上。常常這樣做會遇到不少問題,因為TextBox實際上是一個Windows組件,和網頁顯示標記如:<p>,<td>,<div>等,對字元的解析方法是不同的。比如前者的換行標記為“”,而後者為“<br>”。這就帶來一個轉換的問題。
在做轉換之前,先來考慮幾個問題:
1、 TextBox用“”來標記換行而網頁中以“<br>”標記
2、 網頁中連續的空格當做一個空格處理,比如“a b c”將會顯示“a b c”
3、 使用者輸入特殊字元比如:“<”,“&”,“&nbsp;”,“&lt;”,這些都是網頁中有特殊意義的字元,會被解析,而使用者輸入的目的當然是不希望被解析。
現在來解決這幾個問題,有一種解決辦法是在顯示的時候仍然用TextBox去顯示,這樣就不用做任何轉換,只要把TextBox.ReadOnly設為true,這樣在一定程度上能滿足要求。但是往往為了網頁的美觀,這樣做是不可取的。比較好的辦法是去解析使用者輸入的字串,可以做這樣的轉換:
第一步:
“<” à“&lt;”
“&” à“&amp;”
“&nbsp;”à“&amp;nbsp;”
……(此處的省略符號後文有說明)
第二步:
“ ” à“&nbsp;”
“” à“<br>”
這裡必須分兩步轉換,因為如果你先做第二步轉換的話混把使用者輸入的特殊字元串和由轉換而的的特殊字元串混淆,比如:
使用者輸入:a b c&nbsp;d
第二步轉換:a&nbsp;b&nbsp;&nbsp;&nbsp;c&nbsp;d
第一步轉換:a&amp;nbsp;b&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;d
可以看到,經過第一次轉換後已經無法分辨使用者輸入的“&nbsp;”和轉換而來的“&nbsp;”,在做第二次轉換的時候就會統一處理就會出錯。結果顯示:a&nbsp;b&nbsp;&nbsp;&nbsp;c&nbsp;d
如果嚴格按照第一步,第二步的轉換順序來轉換就不會出現這個問題。
把轉換後的字串存入資料庫,在顯示的時候直接把從資料庫讀出的字串給HTML組件賦值,比如:
//這裡假設temp是從資料庫中讀出來的,這裡示範Table和HtmlTable其他的控制項類似
//顯示的效果是:<a b

//Table1是Web控制項
String temp = “&lt;a&nbsp;b”;
Table1.Rows[0].Cells[0].Text = temp;
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.