有没有办法控制MVC 3自定义助手类生成的HTML格式?

时间:2012-12-17 08:54:13

标签: html asp.net-mvc-3

我正在使用MVC 3进行Web开发,这里当我使用自定义帮助程序类创建HTML时,它看起来非常难看。

例如:如果我使用帮助器构建一个列表,它会给我一个结果如下:

<ul>
<li>some link 1</li>
<li>some link 2</li>
<li>some link 3</li>
<li>some link 4</li>
</ul>

我需要的是格式化的HTML如下:

<ul>
   <li>some link 1</li>
   <li>some link 2</li>
   <li>some link 3</li>
   <li>some link 4</li>
</ul>

有没有可用的本地方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

这应该无关紧要,因为这只会影响渲染标记的人类读者。我不会否认拥有可读的HTML是有用的,但是你有多少时间可以证明花费这些工作来使这部分“正确”?

这有两个主要决议:

第一个 - 处理生成的HTML

使用此方法,您将从辅助函数返回MvcHtmlString,然后通过HTML格式库运行生成的HTML片段。这种方法非常慢,因为它必须呈现未缩进的HTML,然后解析并分析它,然后重新呈现它。如果您使用繁重的库重新格式化代码,或者将其发送到外部库进行处理(例如HtmlTidy可执行文件),则预计它会在页面加载时间上增加10毫秒。

第二个 - 修复HTML帮助

当然,最好的方法是重新实现HTML帮助程序,以便缩进代码。幸运的是,HTML帮助程序往往不太复杂。复制生成的源(使用Reflector)并不难,然后将其粘贴到具有正确缩进的新辅助方法中。

当然,这是假设整个<ul>及其所有<li>元素都是由一个Helper调用生成的,而不是您在视图中自己省略缩进文件。