如何在页面请求之间保持Telerik TabStrip选项卡?

Ale*_*jak 8 asp.net-mvc telerik

在Telerik ASP.NET MVC TabStrip中,我希望页面记住最后选择了哪个选项卡,并通过多个页面请求保留选择.我所拥有的是一个部分视图,显示在多个页面中,它包含TabStrip.使用SelectedIndex,设置选项卡始终被选中,这将使用户的选择无效.

Sim*_*onF 6

我无法通过Telerik API找到任何官方方式,也没有在他们的论坛上找到任何有用的建议,所以我决定按照自己的方式使用:

  1. Html.Telerik().TabStrip().ClientEvents()OnSelect()和OnLoad()
  2. jQuery的cookie插件

然后我在包含TabStrip的局部视图中将它们连接起来,如下所示.

.ClientEvents(events => events
.OnSelect(() =>
{ 
    %>
    function(e) {
        var item = $(e.item);
        $.cookie('selectedTabIndex', item.index(), { path: '/' });
    }
    <%
})
.OnLoad(() =>
{ 
    %>
    function(e) {
        var tabStrip = $("#TabStrip").data("tTabStrip");
        var index = $.cookie('selectedTabIndex');
        var domElement = $("li", tabStrip.element)[index];
        tabStrip.select(domElement);
    }
    <%
})
Run Code Online (Sandbox Code Playgroud)

)

编辑:我意识到我的答案有点缺乏解释所以我补充说:

如果不明显,OnSelect会在选中选项卡时捕获所选选项卡的索引,并将其写入名为selectedTabIndex的cookie.路径正在被设置,因此它将覆盖我们的整个站点,但是如果你把它留下来,它将为每个不同的路径创建一个新的cookie(这可能是你想要的行为).有人更熟悉jQuery cookie插件请纠正我,如果我错在那里,我没有太多使用它.

然后在OnLoad中它基本上正好相反.它找到tabStrip,从cookie中获取索引,然后从cookie获取索引处的选项卡的domElement,并告诉tabStrip选择该domElement.

这似乎在Chrome和IE中运行良好,但在FFox 3中可能存在一些怪癖.

我希望Telerik团队考虑将其添加到他们的API中,因为这对我来说是一个非常有用的功能.如果它已经是道歉,但我在文档中找不到它.