我有一個MVC 2.0應用程序,它接受來自textarea的多行輸入,然後在其他地方顯示文本。我想至少保留段落。處理textarea輸入以保留段落
目前我使用表單的TextArea助手,然後Html.Encode的價值時,我輸出它。
// form view
<%: Html.TextAreaFor(model => model.Text, new { cols = 80, rows = 20 })%>
// display view
<div><%: Model.block.Text %></div
當然,這僅僅是不夠的。的
first line
second line
輸入被渲染爲
<div>first line
second line</div>
出現爲 '第一行第二行'。不理想。
據我所知,我可以自己插入p標籤到文本中,甚至讓用戶輸入它們。但是,在這種情況下,我將不得不禁用HtmlEncode顯示頁面,似乎有問題,對不對?是否真的沒有比手動去除文本中所有標籤,然後調用HtmlEncode,然後添加p標籤,然後禁用視圖自動編碼更好的方法?
從本質上講,我聽過這個論壇上的人們提到所見即所得的編輯器,比如TinyMCE,用於textarea輸入。到目前爲止,我沒有看到這將如何解決問題。編輯不會對輸入做可靠的衛生處理,但會再次要求我在顯示頁面上刪除HtmlEncoding。我再一次面臨從零開始編寫複雜的消毒劑,或者直接刪除所有標籤,包括a和圖像,直到奇特的WYSIWYG編輯器變得完全沒有意義。
這將工作,雖然它有點太侵略我的目的。我不想打破每換行,只是在每一個空白換行符(多個新行)。
第一行\ n 第二線
\ n \ n第三線
\ n 我想這意味着我需要一個稍微複雜的匹配邏輯尋找類似於'([\ f \ r \ t \ v] * \ n){2,}「的東西,那麼它應該可能位於控制器或幫助器部分的某處而不是視圖本身 I'我會看看前趨於Html.Encode接受一個可選的add_paragraphs值。 – duffy 2010-07-16 06:43:54