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 に答える