【发布时间】:2014-05-05 09:08:38
【问题描述】:
我有一个简单的标签生成器,如下所示:
public static MvcHtmlString Tag(this HtmlHelper helper, string tag, string content)
{
var tagBuilder = new TagBuilder(tag){InnerHtml = content};
return MvcHtmlString.Create(tagBuilder.ToString(TagRenderMode.NormalTag));
}
而且,我可以这样使用它:
@Html.Tag("em", Model.Title)
产生:
<em>The Title</em>
如何编写它以使用流畅的语法,所以它的使用看起来像这样:
@Html.Tag("em").Content(Model.Title)
【问题讨论】:
-
与常规 HTML 相比,这有什么好处?通常不推荐这种类型的东西,因为任何进入该项目的开发人员(可能已经知道 HTML)现在都必须学习你的包装器。它还使编写 HTML 更冗长且可读性更低。
-
我希望实现的好处是尽可能地抽象 HTML(为了以 C# 为中心的开发人员,而不是 HTML 开发人员的利益)。我的目标不一定是针对这样的简单场景,而是开发更复杂的 Html 构建器,这些构建器具有许多可从 Fluent 语法中受益的移动部件。
标签: asp.net-mvc html-helper fluent