这两个控件的适当用途是什么?我不时在后面的代码中构建HTML。有时我想输出空格,我最终会做这样的事情。
const string twoSpaces = " ";
p.Controls.Add(new Literal { Text = twoSpaces });
或
const string twoSpaces = " ";
p.Controls.Add(new LiteralControl { Text = twoSpaces });
我的问题是,这是否恰当地使用了这些控件?我应该这样添加空格吗?我何时使用其中一个?
我意识到我可能会用CSS做些什么,但我真的想知道这两个控件的用途是什么,以这种方式使用它们有什么本质上的错误。
答案 0 :(得分:34)
Literal使用ViewState,并会记住Postbacks对其属性的任何更新。 LiteralControl必须在每次回发时设置其属性。
除此之外,使用Literal时要非常小心。如果您允许在Literal标记中呈现用户输入,则很可能会打开XSS攻击。
答案 1 :(得分:10)
克里斯·皮特曼已正确回答,但我只想补充一些关于这两者的更多事实。
Literal 是一个可以在aspx页面上添加的控件,也可以添加到后面的代码中。
asp:Literal Text="text" runat="server"
但 LiteralControl 无法添加到aspx页面上,只能添加到后面的代码中。这就是 LiteralControl 没有将ViewState与页面类关联的原因。