asp:占位符内容到字符串

简单的问题,但我找不到任何东西,是否有可能将asp:占位符的内容添加到字符串? 如果可能的话,这对服务器端来说会很棒。

卢克

如果您只想要占位符的文本内容:

string textualContent = ((LiteralControl) PlaceHolder1.Controls[0]).Text; 

返回"Hello World"

 Hello World 

如果你还想获得渲染控件的html(以及它的所有子控件):

 System.IO.TextWriter tw = new System.IO.StringWriter(); HtmlTextWriter h = new HtmlTextWriter(tw); PlaceHolder1.RenderControl(h); string html = tw.ToString(); 

对于这个aspx( GridView是带有一些sameple数据的数据绑定):

  Test-Label     

将生成此html(取决于浏览器):

 Test-Label
IDText
1Row #1
2Row #2
3Row #3
4Row #4
5Row #5

请注意,您需要将页面指令更改为

 EnableEventValidation="false" 

并覆盖VerifyRenderingInServerForm中的VerifyRenderingInServerForm

 public override void VerifyRenderingInServerForm(Control control) { /* Confirms that an HtmlForm control is rendered for the specified ASP.NET server control at run time. */ } 

手动调用RenderControl

尝试PlaceholderRenderControl方法。

我为HyperLink做了类似的事情,但是作为一个Placeholderinheritance自System.Web.UI.Control ,它应该完全相同。 像这样的东西:

 StringBuilder sb = new System.Text.StringBuilder(); using (var stringWriter = new System.IO.StringWriter(sb)) { using (var htmlTextWriter = new System.Web.UI.HtmlTextWriter(stringWriter)) { YourPlaceHolder.RenderControl(htmlTextWriter); } } return sb.ToString(); 

我写了一篇关于这个主题的简短文章: http : //www.tomot.de/en-us/article/3/asp.net/create-a-control-in-the-codebehind-and-retrieve-its渲染的输出