在MVC中替换ITemplate?

时间:2010-02-09 18:35:10

标签: asp.net-mvc asp.net-mvc-2

我目前正在运行一个网站,我使用一个从ITemplate继承的控件来包装我的所有用户控件。

基本上它是一个带有漂亮边框的表,我可以在那里转储任何东西,所以如果我更改容器模板,整个站点的所有容器都会发生变化......

我现在正在使用MVC 2重建整个应用程序,有没有人知道我可以在MVC中实现相同的“容器”模板?

2 个答案:

答案 0 :(得分:0)

在MVC中有几种方法可以做到这一点,但我建议使用自定义HTML Helper

有一个关于如何实现类似in this post的例子的例子。有关详细信息,请查看that post中标题为“创建DataGrid助手”的部分。我认为你将能够适应这个例子以适应你的目的。

答案 1 :(得分:0)

我管理的Thanx就是一个例子:

public static class Block
{
    public static BlockHelper BeginBlock(this System.Web.Mvc.HtmlHelper content, string title)
    {
        return new BlockHelper(content, title);
    }
}

public class BlockHelper : IDisposable
{
    private readonly HtmlHelper _content;
    private readonly HtmlHelper _title;

    public BlockHelper(System.Web.Mvc.HtmlHelper content, string title)
    {
        _content = content;
        StringBuilder sb = new StringBuilder();
        sb.Append("<div>");
        sb.Append("<div><h1>" + title + "</h1></div>");
        _content.ViewContext.Writer.Write(sb.ToString());
    }

    public void Dispose()
    {
         StringBuilder sb = new StringBuilder();
        sb.Append("</div>");
        _content.ViewContext.Writer.Write(sb.ToString());
    }
}

然后我基本上使用它如下:

<% using( Html.BeginBlock("TITLE>CONTENT GOES HERE<%}%>