接受动态添加HTML页面到ASP.NET页面
问题描述:
我在页面加载页面动态添加html代码。像这样:
接受动态添加HTML页面到ASP.NET页面
protected void Page_Load(object sender, EventArgs e)
{
//HTML file
string file = Server.MapPath("~/ProductsF/DetailFiles/"+Request.QueryString["Page"]);
FileInfo fi = new FileInfo(file);
HtmlGenericControl hgc = new HtmlGenericControl();
if (File.Exists(file))
{
//load html file
StreamReader sr = File.OpenText(file);
hgc.InnerHtml = sr.ReadToEnd();
sr.Close();
sr.Dispose();
}
this.ContentPanel.Controls.Add(hgc);
}
,但我想访问预先渲染事件一些HTML控制和改变一些属性。但我不能访问这些html控件。
protected override void OnPreRender(EventArgs e)
{
MakeAllUrlFullyQualified(Page);
base.OnPreRender(e);
}
private void MakeAllUrlFullyQualified(Control control)
{
if (control.HasControls())
{
foreach (Control child in control.Controls)
MakeAllUrlFullyQualified(child);
}
if (control is HtmlAnchor)
{
HtmlAnchor anchor = control as HtmlAnchor;
anchor.HRef = WebHelper.GetFullyUri(ResolveUrl(anchor.HRef));
}
else if (control is HtmlImage)
{
HtmlImage image = control as HtmlImage;
image.Src = WebHelper.GetFullyUri(ResolveUrl(image.Src));
}
else if (control is HtmlLink)
{
HtmlLink link = control as HtmlLink;
link.Href = WebHelper.GetFullyUri(ResolveUrl(link.Href));
}
}
这段代码有什么问题?
答
您正在通过HtmlGenericControl.InnerHTML
属性将HTML添加到您的页面。你没有添加控件。
您要添加的唯一控件是HtmlGenericControl
(hgc),但您并未添加任何其他控件。
期待通过对User Controls和Master Pages的文档,了解如何正确地在ASP.NET模板网站
编辑:
要访问您所添加的HTML,你可以做到以下几点:
if (control is HtmlGenericControl)
{
HtmlGenericControl myGenericControl = control as HtmlGenericControl;
string innerHtml = myGenericControl.InnerHtml;
}
你不能做的是将HTML转换为控件。
我想访问一些在页面加载时动态添加的html标签 – mmtemporary 2009-12-16 12:10:48