当前位置:  开发笔记 > 编程语言 > 正文

何时使用Literal vs LiteralControl?

如何解决《何时使用LiteralvsLiteralControl?》经验,为你挑选了2个好方法。

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

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

要么

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

我的问题是,这是否适当使用这些控件?我应该这样添加空格吗?我何时使用一个而不是另一个?

我意识到我可以用CSS做一些事情,但我真的想知道这两个控件的用途是什么,并且以这种方式使用它们是否存在任何本质上的错误.



1> Chris Pitman..:

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

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


+1.HttpUtility.HtmlEncode()或更安全但速度稍慢的Microsoft的Anti-XSS库提供了一些保护 - 但正如Chris所说,要非常小心能够在Literal/LiteralControl中呈现用户输入.

2> Ankur Bhutan..:

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

Literal是一个控件,可以添加到aspx页面以及后面的代码中.

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

但是LiteralControl不能添加到aspx页面上,而只能添加到后面的代码中.这就是为什么LiteralControl没有将ViewState与页面类相关联的原因.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有