【问题标题】:Obtain the current contents of the TextWriter stream获取 TextWriter 流的当前内容
【发布时间】:2014-03-14 21:25:16
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    你看过delegated razor templates吗?

    【讨论】:

    • 这允许我为内容设置模板,但不允许我更改模板的内容。内容被读入 Helper 的 TextWriter。
    猜你喜欢
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多