占位符与字面量:在运行时添加生成的HTML标记的选择

11

这个问题涉及到Literal和Label的区别,而这个问题则提到了Panel和PlaceHolder的区别,但今天我和我的同事在讨论使用PlacHolder和Literal来添加在运行时生成的HTML标记。这两个控件都不会产生任何额外的标记,但我们正在寻找适合在运行时添加生成的标记的控件。这个问题的答案建议同时使用这两个控件添加生成的标记,所以我想知道我们应该使用哪个控件/方法来仅仅添加生成的标记而已。

2个回答

14

两者都不生成它们自己的标记(这可能是非常好的事情)。然而,Placeholder 可以包含子控件,而 Literal 不能。

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

  

我想知道我们应该使用哪种控件/方法来添加生成的标记而不做其他任何事情。

如果您所说的“生成的”是指最终结果是字符串,则应使用 Literal。如果您正在生成控件树,请将这些控件追加到 Placeholder 上。

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

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

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


6
PlaceHolder vs Literal for adding HTML

主要区别在于文字控件具有“Text”属性(和模式),这也保存在Viewstate中,而“占位符”完全为空。
因此,您可以使用文字控件直接添加一些字符串HTML代码,并且您可以使用“占位符”添加其他控件,但不添加任何直接的HTML代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接