选项卡内的asp.net mvc选项卡

时间:2011-03-22 17:23:34

标签: asp.net asp.net-mvc

我使用标准的visual studio模板创建了一个asp.net mvc2项目,该模板包含2个标签Home和About。

在“首页”标签中,我想从此处添加子标签http://labs.silverorange.com/archive/2003/september/simplecsstabs

我该怎么做:我可以创建子组件和子控制器或什么?

我是asp.net和MVC的初学者,所以不能有一个尽可能接近普通css选项卡的初学者解决方案吗?

1 个答案:

答案 0 :(得分:1)

您可以编写一个自定义HTML帮助程序,它将根据当前控制器和操作生成这些子选项卡。这是一个让你入门的例子:

public static class HtmlExtensions
{
    public static MvcHtmlString SubTabs(this HtmlHelper htmlHelper)
    {
        var currentAction = htmlHelper.ViewContext.RouteData.GetRequiredString("action");
        var currentController = htmlHelper.ViewContext.RouteData.GetRequiredString("controller");

        // TODO: base on the current action and controller 
        // generate proper tabs       

        var ul = new TagBuilder("ul");
        var lis = new StringBuilder();
        var li = new TagBuilder("li");
        li.InnerHtml = htmlHelper.ActionLink("sub 1", "sub1", "home").ToHtmlString();
        lis.AppendLine(li.ToString());
        li = new TagBuilder("li");
        li.InnerHtml = htmlHelper.ActionLink("sub 2", "sub2", "home").ToHtmlString();
        lis.AppendLine(li.ToString());

        ul.InnerHtml = lis.ToString();
        return MvcHtmlString.Create(ul.ToString());
    }
}

然后在你看来:

<%= Html.SubTabs() %>

显然在我的例子中,一切都是硬编码的。您可能希望保留一些与给定控制器和操作相对应的子选项卡的集中哈希表。一旦获得正确的标记,只需从您在问题中引用的网站上应用CSS,就可以了。

相关问题