PlaceHolder vs Literal 用于添加运行时生成的 HTML 标记

Posted

技术标签:

【中文标题】PlaceHolder vs Literal 用于添加运行时生成的 HTML 标记【英文标题】:PlaceHolder vs Literal for adding HTML markup generated at runtime 【发布时间】:2013-02-25 18:13:02 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

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

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

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

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

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

【讨论】:

【参考方案2】:
PlaceHolder vs Literal for adding HTML

主要区别在于 Literal 控件具有同样保存在 Viewstate 上的 Text 属性(和 Mode),PlaceHolder 完全为空。

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

【讨论】:

以上是关于PlaceHolder vs Literal 用于添加运行时生成的 HTML 标记的主要内容,如果未能解决你的问题,请参考以下文章

使用 python 的 eval() 与 ast.literal_eval()

format not a string literal and no format arguments

Kubernetes之八:ConfigMap from-literal -from-file实战

thinkphp禁止模版标签解析

TFboy养成记 简单小程序(Variable & placeholder)

python中赋值问题can't assign to literal?