1

我正在为 MVC 构建一个自定义 HtmlHelper。我想允许用户添加将与帮助程序一起使用的 HTML 块。因此,我计划在我看来类似于以下内容:

@using (Html.MyHelper())
{
  // foo
}

MyHelper 辅助方法的定义类似于以下内容:

public static MyHelperWriter MyHelper(this HtmlHelper helper)
{
  helper.ViewContext.Writer.Write(@"<span>");
  return new MyHelperWriter(helper.ViewContext.Writer);
}

public class MyHelperWriter : IDisposable
{
  private bool disposed;
  public TextWriter Writer { get; set; }

  public MyHelperWriter(TextWriter writer)
  {
    /// TODO: Modify the TextWriter stream
    Writer = writer;
  }

  public void Dispose()
  {
    Dispose(true);
    GC.SuppressFinalize(this);
  }

  protected virtual void Dispose(bool disposing)
  {
    if (!this.disposed)
    {
      this.disposed = true;
      Writer.Write(@"</span>");
    }
  }
}

我想做的是更新 TextWriter 流以捕获它并对内容做一些事情。我知道我可以刷新流,但我可能想覆盖该行为。

如果这不能完成(并且看起来很恶心),有没有更好的方法来完成同样的事情?

4

1 回答 1

1

您是否查看过委托剃须刀模板

于 2014-03-15T00:00:41.850 回答