我正在使用带有C#和SQL Server 2005的ASP.NET。我的表单上有一个简单的ASP.NET标签。
<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>
这是正确的做法吗?如果不是那么是因为我需要用文本填充该标签,使得每个段落都有段落和样式。
提前致谢!
答案 0 :(得分:4)
一般来说,没有。您希望您的数据库字段与它们将要使用的介质无关(因为可能有很多:HTML,纯文本等)
您应该做的是将字段重新格式化为显示的任何上下文。这意味着如果您需要“更丰富”格式的数据,通常使用标记方案(也许markdown),这样您就可以处理它并以您喜欢的任何方式呈现它。
但是,您可以在另一个字段中缓存此格式,以加快检索过程。
答案 1 :(得分:1)
您可以在Label和Literal中使用HTML代码。 Literal 控件比Label更轻量级。它意味着将text / html直接写入浏览器。标签比Literal更笨重,但具有WebControl的所有好处,例如样式选项等。
文字控制:Asp.NET Literal
答案 2 :(得分:1)
谁将这些字符串输入数据库?这种方法的常见问题是:
因此,在大多数情况下,您只想在数据库中存储真实文本,然后在添加到页面时对其进行格式化并转义所有html字符。
答案 3 :(得分:0)
我个人会避免将HTML存储在数据库中......但是这又取决于上下文。
如果您有一个用于存储来自富文本框的输入的表,那么您将以某种方式存储已应用的任何格式。
正如其他人所提到的那样,一个更安全的替代方法就是创建自己的[bbCode]语法,与此处的文本框(Stack OverFlow)的工作方式非常类似......
例如。任何粗体' foo '的文字 变成[b] foo [/ b]
由于您需要解析文本并使用等效的[bbCode]标记替换任何标记,然后在输出到网页时反向执行,但是我个人认为这是一种更安全的方法。数据完整性。
答案 4 :(得分:0)
为什么不将它作为xhtml存储在数据库中 - 您可以在推入之前对其进行验证。使用XML字段类型。这样,如果你需要查询它,你的数据仍然是结构化的。