11

这个问题指出了Literal vs Label而这个问题指出了Panel VS。PlaceHolder但就在今天,我正在与我的同事讨论使用PlacHolder 与 Literal来添加在运行时生成的 HTML 标记。这两个控件都不会产生任何额外的标记,但我们正在寻找合适的控件来动态添加生成的标记。这个问题的答案建议使用两者来添加生成的标记,所以我想知道我们应该使用哪种控制/方法来添加生成的标记,仅此而已。

4

2 回答 2

14

既不渲染自己的任何标记(这可能是一件非常好的事情)。但是,aPlaceholder可以包含子控件,而 aLiteral不能。

相比之下,aPlaceholder可以包含其他控件,但没有Text属性。

我想知道我们应该使用哪种控制/方法来添加生成的标记,仅此而已。

如果“生成”是指最终结果是一个字符串,我会使用Literal. 如果要生成控件树,则将这些控件附加到Placeholder.

或者,如果您想完全省略服务器控件的声明:

<h2>Hello World</h2>
<p>The following is generated markup.</p>
<%= base.GetGeneratedMarkup() %>

我相信 aLiteral仍然在后台生成,但它允许您将生成的内容与页面/控件的标记部分混合(类似于 Razor)。

于 2013-03-10T15:47:50.250 回答
6
PlaceHolder vs Literal for adding HTML

主要的不同是 Literal 控件具有Text也保存在 Viewstate 上的属性(和 Mode),PlaceHolder完全是空的。

所以你可以使用Literal 控件直接添加一些字符串 html 代码,并且可以使用PlaceHolder 添加一些其他控件但不添加任何直接 html 代码。

于 2013-03-10T16:06:31.043 回答