2016-01-29 145 views
0

我想讓最終用戶在我的ASP.NET MVC應用程序的文本區域中輸入沒有任何格式的文本。但是,我想保留他們在輸入文字時創建的任何換行符或段落。如何在我的ASP.NET MVC應用程序中允許選擇性HTML輸入?

如果我在不允許HTML輸入的情況下使用textarea,默認情況下,當文本保存到數據庫或讀回顯示在用戶界面上時,換行符和段落不會保留。

如果我AllowHTML,我冒着代碼注入的風險。

我能想到實現這個唯一的另一種方式是AllowHTML而是有檢查只允許<p>標籤和<br />標籤的自定義屬性,但隨後實施的是,簡單,因爲它看起來,我將不得不維護一個所有可能的HTML標籤的字典,並且由於Web的性質如此不穩定,神知道CSS還有什麼其他的語法標記。

我是否過度複雜化了這個問題?有沒有什麼東西可以用,或者是否有更簡單的方法來實現?

我正在使用針對ASP.NET 4.5的ASP.NET MVC 5.2.3。

+0

你是什麼意思_保留任何linebreak_?如果用戶只是輸入純文本並使用返回鍵輸入一個新段落,則它將被保留。 –

+1

但換行符保留,所以不知道爲什麼你聲稱他們不是。如果你的意思是在顯示視圖中(例如'

@Model.SomeProperty
'),你看不到它們,因爲你需要用'whitespace:pre;' –

+0

@StephenMuecke來設計元素的樣式。謝謝。這是正確的答案。 :-) –

回答

1

textarea保留換行符爲\n個字符。當在textarea元素之外顯示值作爲頁面的一部分時,'\n'字符需要用'<br />'替換。

+0

對於像我這樣閱讀本文的人,@StephenMuecke在我的問題的評論中建議,而不是手動進行替換操作,只需設置顯示的元素帶有'white-space:pre'的文本。 –

相關問題