动态地将asp:content添加到页面

时间:2013-06-27 11:57:52

标签: asp.net master-pages

我有一个问题。我想在我的应用程序中设置母版页。由于我有太多的aspx页面,我不想去每个页面并在其中添加asp:content标签。我想要一些动态的方式,我可以查看我的页面,复制它的HTML /其他asp控件,并将其添加到动态创建的内容模板。 我知道如何动态创建内容模板。但是不知道是否可以复制aspx页面的html并将其添加到内容模板中。

让我们说,在我的aspx页面的代码隐藏中,在page_PreInit上,我正在添加以下代码。

base.AddContentTemplate("WebHeaderPH", new CompiledTemplateBuilder(new BuildTemplateMethod(this.getControl)));

getControl是一个包含任何内容的方法(html,text或者可以加载用户控件。)

这样,我正在动态添加内容模板。

现在我的aspx页面内容跟随代码。

<span id="someid" runat="server">blah blah...</span>

现在我想要的是,通过它的id获取此span标记,并将其包装在asp:content下。或者可能在上面的getControl方法中。

但是将此跨度放在页面上,抛出以下错误,

  

内容控件必须是内容页面中的顶级控件或引用母版页的嵌套母版页。

我必须在页面上放置 asp:content 模板。但是如果我这样做,那么我不需要动态创建contentTemplate或者在我动态创建contentTemplate时保持整个页面空白。在这两种情况下,我都要编辑所有的aspx页面。

有没有办法获取网页的HTML并将其添加到 contentTemplate 而无需编辑aspx页面?

1 个答案:

答案 0 :(得分:0)

我担心你必须一步一步地去。这确实是一个设计错误,但它不会花费你很长时间来改变它们。 不幸的是,我也犯了同样的错误,我通过手动编辑我的页面来修复它。