用于ASP.NET MVC的HTML创建的类似XElement的API

时间:2012-08-22 12:06:32

标签: c# .net html

我想封装一些HTML创建逻辑(例如,最终用于ASP.NET MVC剃刀页面)。我可以在纯C#中使用结构化API吗?

我想避免容易出错的基于字符串的构造,我手动需要构建标记并转义正确的字符串,因为这样会让我更难维护并可能导致html注入漏洞。类似于XElement API(例如),然后用于html生成:一种API,它至少可以处理良好的格式并避免使用样板。

这样的API是否存在?安全轻松地生成html片段的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

ASP.NET MVC中有一个内置的HTML生成器。它被称为TagBuilder,它由所有built in Html helpers内部使用。

例如,生成以下HTML:

<div id="someId" class="someClass">
  <p class="paragraph">Some text</p>
  <input type="button" value="Click"/>
</div>

看起来像:

var div = new TagBuilder("div");
    div.GenerateId("someId");
    div.AddCssClass("someClass");
var p = new TagBuilder("p");
    p.AddCssClass("paragraph");
    p.SetInnerText("Some text"); //HtmlEncode the parameter
var button = new TagBuilder("input");
    button.MergeAttribute("type","button");
    button.MergeAttribute("value","click");

div.InnerHtml = (p.ToString() + button.ToString());

在我们的项目中,我们通常在TagBuilder周围创建一个薄的流体包装,如this one,以使它的API更流畅。

如果可以使用某些第三方库并且您需要一些高级功能,可以查看: