在C#中动态生成的HTML格式化

时间:2010-10-31 22:00:17

标签: asp.net html formatting

我有一个带有相当大菜单的ASP.NET Web表单站点。菜单的HTML是通过C#中的方法作为字符串动态生成的。即,返回的内容是这样的:

<ul><li><a href='default.aspx?param=1&anotherparam=2'>LINK</a></li></ul>

除了它更大,并且列表最多嵌套4个。

通过代码块将其写入页面。

但是,我不想从方法中返回一个扁平字符串,而是将其作为格式化HTML返回,因此在渲染时它看起来像这样:

<ul>
    <li>
        <a href='default.aspx?param=1&anotherparam=2'>LINK</a>
    </li>
</ul>

我想过将html加载到XmlDocument中,但它不喜欢&amp;在查询字符串中找到的字符(在href属性值中)。

这样做的主要原因是我可以在开发过程中更轻松地调试生成的HTML。

有人有什么想法吗?

4 个答案:

答案 0 :(得分:3)

也许你可以使用HtmlTextWriter?它具有缩进功能,它可能实际上更简洁,因为您可以直接写入输出流,这应该比在内存中生成字符串等更多“在流程中”。

答案 1 :(得分:1)

你有理由这样做吗?这种隐式缩小的HTML无论如何都会表现得稍好一些。如果仍然需要渲染HTML以进行漂亮显示,则需要将缩进合并到生成输出HTML的逻辑中,或者使用ASP.NET控件构建内容,然后调用Render()。

答案 2 :(得分:0)

尝试将HTML加载到HTML Agilty Pack。它是一个HTML解析器,可以处理HTML片段(并且可以在URL中使用&)。

我不确定它是否可以输出漂亮的打印(你称之为“格式化”)HTML,但这将是我的第一种方法。

答案 3 :(得分:0)

我喜欢将格式字符串用于此类事务,您的HTML输出将使用;

生成
String.Format("<ul>{0}\t<li>{0}\t\t<a href='{2}'>{3}</a>{0}\t</li>{0}</ul>",
               System.Environment.NewLine,
               myHrefVariable,
               myLinkText);