我想封装一些 HTML 创建逻辑(例如,最终在 ASP.NET MVC 剃须刀页面中使用)。我可以使用纯 C# 中的结构化 API 来执行此操作吗?
我想避免容易出错的基于字符串的构造,在这种构造中我需要手动构建标签并转义正确的字符串,因为这让我难以维护并且可能导致 html 注入漏洞。类似于XElement
API 的东西(例如),但随后用于 html 生成:一个 API 至少要注意格式正确并避免样板。
这样的 API 存在吗?安全轻松地生成 html 片段的最佳方法是什么?
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 更加流畅。
如果可以使用一些第三方库并且您需要一些高级功能,您可以查看: