获取TextWriter流的当前内容

时间:2014-03-14 21:25:17

标签: asp.net-mvc razor html-helper textwriter

我正在为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流以捕获它并对内容执行某些操作。我知道我可以刷新流,但我可能想要覆盖行为。

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

1 个答案:

答案 0 :(得分:1)

你有没有看过delegated razor templates