ASP.NET comment rendre un contrôle en HTML?
J'en ai ASP.NET contrôle. Je veux la chaîne HTML Comment puis-je obtenir la chaîne HTML du contrôle?
27
demandé sur
David Basarab
2008-09-12 17:17:46
3 réponses
Cela semble fonctionner.
public string RenderControlToHtml(Control ControlToRender)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
System.IO.StringWriter stWriter = new System.IO.StringWriter(sb);
System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(stWriter);
ControlToRender.RenderControl(htmlWriter);
return sb.ToString();
}
40
répondu
David Basarab
2008-09-12 13:19:54
La réponse acceptée par David Basarab
ne fonctionnera pas si le contrôle ne fait pas partie de la page. La réponse de a7drew
semble complexe inutile-pas besoin de Context
ou Server.Execute
.
private string RenderControl()
{
var sb = new System.Text.StringBuilder();
using (var stWriter = new System.IO.StringWriter(sb))
using (var htmlWriter = new HtmlTextWriter(stWriter))
{
var p = new Page();
var ctrl = (YourControl)p.LoadControl("~/controls/building blocks/YourControl.ascx");
ctrl.Visible = true;
// do your own init logic if needed
p.Controls.Add(ctrl);
ctrl.RenderControl(htmlWriter);
return sb.ToString();
}
}
7
répondu
avs099
2015-09-24 15:57:31
Si votre contrôle est un contrôle utilisateur web, voici comment vous pouvez accéder au code HTML qu'il émet depuis une autre page ou un autre gestionnaire:
public void GetHtmlFromMySweetControl(HttpContext context)
{
HttpRequest httpRequest = context.Request;
HttpResponse httpResponse = context.Response;
string foo = httpRequest["foo"];
Page pageHolder = new Page();
string path = "~/usercontrols/MySweetControl.ascx";
MySweetControl ctrl = (MySweetControl)pageHolder.LoadControl(path);
ctrl.BindProducts(foo);
pageHolder.Controls.Add(ctrl);
StringWriter sw = new StringWriter();
context.Server.Execute(pageHolder, sw, false);
httpResponse.Write(sw.ToString());
}
6
répondu
a7drew
2008-09-12 15:49:06