2009-10-01 44 views
1

我在C#和SQL Server 2005中使用ASP.NET。我的表單上有一個平面簡單的ASP.NET標籤。數據庫中的HTML標籤 - YAY或NAY?

<asp:Label ID="lblBodyCopy1" runat="server"></asp:Label> 

在頁面加載時,我使用保存在數據庫中的文本填充此標籤。

<p class="r_box_A">text text</p><p class="r_box_B">text text text</p> 

這是正確的做法嗎?如果不是,那麼因爲我需要用文本填充該標籤,以便對每個段落都具有分段和樣式。

在此先感謝!

回答

4

一般來說,沒有。你希望你的數據庫字段與他們將被使用的媒體無關(因爲可能有很多:HTML,純文本等)

你應該做的是將你的字段重新格式化爲任何他們正在顯示的上下文。這意味着如果您需要「更豐富」的數據格式,您通常使用標記方案(可能爲markdown),因此您可以按照您喜歡的任何方式處理它並進行渲染。

但是,您可能會將此格式緩存在另一個字段中,以加快檢索過程。

+0

所以你說你需要例如UBB代碼的東西,並將其存儲在數據庫中? (我同意)。這是一個可憐的幾個wysiwyg編輯器(像CKEditor不輸出UBB代碼,但純html) – Natrium 2009-10-01 09:23:57

+1

Natrium:確實,因此,我真的不喜歡他們的原因。最好只允許一個簡單的標記,然後所有的內容都可以簡單而容易地呈現(不像處理那些將Word文檔粘貼到那些豐富的編輯器中的人;結果輸出非常糟糕!)。 – 2009-10-01 09:25:47

+0

UBB優於HTML的優點是什麼?兩者都是加價。 – peterchen 2009-10-03 13:22:11

1

您可以在Label和Literal中使用HTML代碼。 文字控制比標籤重量輕很多..它的意思是直接寫出文本/ HTML瀏覽器。標籤是比文字笨重一點,但有諸如風格選擇等

文字控制的WebControl的所有優點:Asp.NET Literal

0

誰進入這些字符串到數據庫?這種方法的通常的問題是:

  • 你需要確保生成的HTML結構良好
  • 可不能確保,如果人們包括存儲在數據庫中的HTML等
  • 腳本

因此,在大多數情況下,您只想在數據庫中存儲真實文本,然後在添加到頁面時對其進行格式化並轉義所有html字符。

+0

我將是唯一一個將這些添加到數據庫中的人。用戶將能夠查看項目,但用戶不會被允許觸摸數據庫。 – Etienne 2009-10-01 09:50:05

0

我個人會避免將HTML存儲在數據庫中......但這又取決於上下文。

如果您有一個表格用於存儲來自富文本框的輸入,那麼您將需要存儲已應用的任何格式。

正如其他人所說,prehaps一個更安全的替代將是在這裏(堆棧溢出)創建自己的[設置高亮]語法,非常類似的方式文本框的作品...

如。任何粗體文字「」 變爲[B]富[/ B]

有參與,因爲你需要分析文本,並具有同等[BB碼]標籤更換任何標籤添加工作然後在輸出到網頁時做相反的事情,但我個人認爲這是一個關於數據完整性的更安全的方法。

0

爲什麼不將它作爲xhtml存儲在數據庫中 - 您可以在推入之前驗證它。使用XML字段類型。這樣如果你需要查詢它就可以了,而你的數據仍然是結構化的。