我目前有一个场景,我重用了 html 代码块。我基本上有一个 div 容器,并且我在整个站点中重复使用该容器及其变体。
该容器由以下 html 组成:
<div class="c_wrapper">
<div class="c_content">
CONTENT GOES HERE
</div>
</div>
*请注意,容器的内容比我指定的要多得多,这是一个基本框架。
我没有在每个页面上多次重新键入容器代码,而是使用 IDisposable 使它更容易一点:
public static class Container
{
public static ContainerHelper BeginContainer(this HtmlHelper content, int containerSize)
{
return new ContainerHelper(content, containerSize);
}
}
public class ContainerHelper : IDisposable
{
private readonly HtmlHelper _content;
public ContainerHelper(HtmlHelper content, int containerSize)
{
_content = content;
var sb = new StringBuilder();
sb.Append("<div class=\"container_" + containerSize + "\">");
_content.ViewContext.Writer.WriteLine(sb.ToString());
}
public void Dispose()
{
var sb = new StringBuilder();
sb.Append("</div>");
_content.ViewContext.Writer.WriteLine(sb.ToString());
}
}
这意味着我现在可以在想要使用容器时简单地使用以下内容:
@using (Html.BeginContainer(24))
{
<span>hello world... and other content here</span>
}
不过,我想更进一步,我意识到 IDisposable 不是理想的解决方案。
我希望能够做到以下几点:
@Html.Container(24)
{
<span>hello world... and other content here</span>
}
关于我如何实现这一目标的任何建议?如果它无法实现,关于如何在不使用 IDisposable 的情况下完成我的第一个示例的建议。
我正在使用 MVC 3/4 和 C#。
谢谢