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