2009-12-16 86 views
1

我在页面加载页面动态添加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)); 
    } 
} 

这段代码有什么问题?

回答

1

您正在通过HtmlGenericControl.InnerHTML属性将HTML添加到您的页面。你没有添加控件。

您要添加的唯一控件是HtmlGenericControl(hgc),但您并未添加任何其他控件。

期待通过对User ControlsMaster Pages的文档,了解如何正确地在ASP.NET模板网站

编辑:

要访问您所添加的HTML,你可以做到以下几点:

if (control is HtmlGenericControl) 
{ 
    HtmlGenericControl myGenericControl = control as HtmlGenericControl; 
    string innerHtml = myGenericControl.InnerHtml; 
} 

你不能做的是将HTML转换为控件。

+0

我想访问一些在页面加载时动态添加的html标签 – mmtemporary 2009-12-16 12:10:48