何时使用Literal vs LiteralControl?

时间:2009-12-04 16:52:11

标签: c# asp.net

这两个控件的适当用途是什么?我不时在后面的代码中构建HTML。有时我想输出空格,我最终会做这样的事情。

const string twoSpaces = "  ";
p.Controls.Add(new Literal { Text = twoSpaces });

const string twoSpaces = "  ";
p.Controls.Add(new LiteralControl { Text = twoSpaces });

我的问题是,这是否恰当地使用了这些控件?我应该这样添加空格吗?我何时使用其中一个?

我意识到我可能会用CSS做些什么,但我真的想知道这两个控件的用途是什么,以这种方式使用它们有什么本质上的错误。

2 个答案:

答案 0 :(得分:34)

Literal使用ViewState,并会记住Postbacks对其属性的任何更新。 LiteralControl必须在每次回发时设置其属性。

除此之外,使用Literal时要非常小心。如果您允许在Literal标记中呈现用户输入,则很可能会打开XSS攻击。

答案 1 :(得分:10)

克里斯·皮特曼已正确回答,但我只想补充一些关于这两者的更多事实。

Literal 是一个可以在aspx页面上添加的控件,也可以添加到后面的代码中。

asp:Literal Text="text" runat="server"

LiteralControl 无法添加到aspx页面上,只能添加到后面的代码中。这就是 LiteralControl 没有将ViewState与页面类关联的原因。