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