1

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

我想避免容易出错的基于字符串的构造,在这种构造中我需要手动构建标签并转义正确的字符串,因为这让我难以维护并且可能导致 html 注入漏洞。类似于XElementAPI 的东西(例如),但随后用于 html 生成:一个 API 至少要注意格式正确并避免样板。

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

4

1 回答 1

2

ASP.NET MVC 中有一个内置的 HTML 生成器。它被称为TagBuilder,所有内置的 Html 助手都在内部使用它。

例如生成以下 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的东西周围创建一个薄的流体包装器,以使其 API 更加流畅。

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

于 2012-08-22T17:05:39.343 回答