在Telerik ASP.NET MVC TabStrip中,我希望页面能够记住最后选择的选项卡,并通过多个页面请求保留选择。 我所拥有的是一个部分视图,显示在多个页面中,它包含TabStrip。使用SelectedIndex,设置选项卡始终被选中,这将使用户的选择无效。
答案 0 :(得分:6)
我找不到通过Telerik API执行此操作的任何官方方式,也没有在他们的论坛上找到任何有用的建议,所以我决定按照自己的方式使用:
然后我在包含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);
}
<%
})
)
编辑:我意识到我的答案有点缺乏解释所以我添加了:
如果不明显,则选择OnSelect 正在捕获所选的索引 选择和写入时的选项卡 那个叫做的cookie selectedTabIndex。道路正在发生 设置所以它将覆盖我们的整个网站, 但如果你把它留下来就会 为每个不同的人创建一个新的cookie 路径(这可能是你想要的 行为)。有人比较熟悉 请使用jQuery cookie插件 如果我错了,请纠正我,我 没用多少。
然后在OnLoad中它正在做 相反,基本上。它找到了 tabStrip,从中获取索引 cookie,然后得到domElement 来自cookie的索引处的选项卡 并告诉tabStrip选择它 一个DOMElement。
这似乎在Chrome和IE中运行良好,但在FFox 3中可能存在一些怪癖。
我希望Telerik团队考虑将其添加到他们的API中,因为这对我来说是一个非常有用的功能。如果已经道歉,但我在文档中找不到它。