ASP控件的HTML模板

时间:2009-04-22 14:45:25

标签: c# asp.net html dynamic

我正在编写一个应用程序,要求我的客户可以按照他们选择的方式布置他们的输入表单。

我想将HTML模板与占位符一起使用,然后在运行时将这些替换为带有严格的.NET控件:

<table style="width: 100%;">
<tr>
    <td colspan="2">
        <fieldset title="Customers Template" >
            <table style="width:100%;">
                <tr>
                    <td width="140">
                        Policy Number:</td>
                    <td width="150">
                        $$Policy Number$$</td>
                    <td colspan="2" rowspan="3" valign="top">
                        Type 1:<br />
                        $$Type 1$$</td>
                    <td rowspan="3" valign="top">
                        Info:<br />
                        $$Info$$</td>
                    <td rowspan="3" valign="top">
                        Problems:<br />
                        $$Problems$$</td>
                </tr>...

所以我希望在运行时根据所添加字段的数据类型,使用各种.NET控件查找并替换我的$$ xxx $$文本。

有关如何处理此问题的好方法的任何建议?

谢谢, 标记

2 个答案:

答案 0 :(得分:1)

<asp:PlaceHolder>控件替换$$ xxx $$块。

在运行时,您可以解析模板

---在最简单的情况下,您可以要求模板是有效的xhtml,然后您可以简单地使用.NET XML API迭代XmlDocument的所有ChildNodes。从每个元素构建适当的ASP.NET服务器控件。

对于更复杂(且完整的HTML解析器),请参阅http://www.developer.com/net/csharp/article.php/2230091

在您解析时,只要看到<asp:PlaceHolder>,请将其替换为定义模板的逻辑。

教程:http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=752

答案 1 :(得分:0)

如果您要仅使用字符串替换这些占位符,请查看NVelocity template engineIn this answer,我只是展示了如何通过模板创建电子邮件。

但是对于asp.net服务器控件,您可以将html模板拆分为块,然后将它们作为LiteralControl添加到您的页面中:

Page.Controls.Add(new LiteralControl(@"<td width='140'>
                        Policy Number:</td>
                    <td width='150'>"));
Page.Controls.Add(textBox1);
Page.Controls.Add(new LiteralControl(@"</td><td colspan='2' rowspan='3' valign='top'>
                        Type 1:<br />"));
相关问题