如何用Fluent语法编写HtmlHelper

格雷格·古姆

我有一个简单的标签生成器,如下所示:

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>

如何编写它以使用Fluent语法,因此它的用法如下所示:

@Html.Tag("em").Content(Model.Title)
凯兰

您必须定义一个构建器接口和实现。我希望我的示例可以提供一些指导:

public static class MyHtmlExtensions
{
    public static IMyTagBuilder Tag(this HtmlHelper helper, string tag)
    {
        return new MyTagBuilder(tag);
    }
}

然后定义构建器接口和实现:

public interface IMyTagBuilder : IHtmlString
{
    IHtmlString Content(string content);
}

public class MyTagBuilder : IMyTagBuilder
{
    private readonly TagBuilder _tagBuilder;

    public MyTagBuilder(string tag)
    {
        _tagBuilder = new TagBuilder(tag);
    }

    public IHtmlString Content(string content)
    {
        _tagBuilder.InnerHtml = content;
        return this;
    }

    public string ToHtmlString()
    {
        return _tagBuilder.ToString(TagRenderMode.NormalTag);
    }
}

由于是IMyTagBuilderImplements IHtmlString,因此可以在.Content()以后调用或不调用的情况下使用

一个伟大的把戏实现流畅的接口可使用时,使用IFluentInterface隐藏对象成员(ToStringEqualsGetHashCode以及GetType来自智能感知),它会删除一些噪音。

编辑:Daniel Cazzulino的构建Funq API的绝佳资源是在此处构建Funq的截屏视频

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何用Java编写Web服务

来自分类Dev

如何用Spring Autowire编写JUnit测试?

来自分类Dev

如何用Ruby方式编写嵌套搜索?

来自分类Dev

如何用jekyll和redcarpet编写目录

来自分类Dev

如何用C ++ / CLI编写此行?

来自分类Dev

如何用参数编写lambda函数?C ++

来自分类Dev

如何用PDO编写此mysql查询

来自分类Dev

如何用请求编写Flask装饰器?

来自分类Dev

如何用Java 8编写instanceof?

来自分类Dev

如何用Python编写Graham算法?

来自分类Dev

如何用C ++编写自己的字符编码?

来自分类Dev

如何用MySQL编写Golang集成测试

来自分类Dev

如何用渐进状态编写JUnit测试

来自分类Dev

如何用Ruby编写IIFE?

来自分类Dev

如何用韩文Jamo编写音节块

来自分类Dev

如何用Java编写Closeable对象?

来自分类Dev

如何用Java编写日期格式?

来自分类Dev

如何用htaccess编写子域?

来自分类Dev

如何用golang编写MongoDB $ slice

来自分类Dev

如何用HTML编写物理方程

来自分类Dev

如何用html编写分数?

来自分类Dev

TypeScript 100.0%如何用TypeScript编写?

来自分类Dev

如何用Java编写数学公式

来自分类Dev

如何用查询语法编写Take(1)

来自分类Dev

如何用查询CI语法编写SQL查询?

来自分类Dev

如何用Swift语法编写这个Objective-C块?

来自分类Dev

如何用count编写查询

来自分类Dev

如何用PHP编写版权?

来自分类Dev

Laravel - 如何用 Laravel 语法中的 count 语句编写两个内部连接?