【发布时间】:2011-04-04 15:54:45
【问题描述】:
在 Telerik ASP.NET MVC TabStrip 中,我希望页面记住最后选择的选项卡并通过多个页面请求保持选择。 我所拥有的是一个显示在多个页面中的部分视图,它包含 TabStrip。使用 SelectedIndex 设置的选项卡总是被选中,这会使用户的选择无效。
【问题讨论】:
标签: asp.net-mvc telerik
在 Telerik ASP.NET MVC TabStrip 中,我希望页面记住最后选择的选项卡并通过多个页面请求保持选择。 我所拥有的是一个显示在多个页面中的部分视图,它包含 TabStrip。使用 SelectedIndex 设置的选项卡总是被选中,这会使用户的选择无效。
【问题讨论】:
标签: asp.net-mvc telerik
我无法通过 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 选定的标签索引。路径正在 设置为覆盖我们的整个网站, 但如果你把它排除在外,它会 为每个不同的创建一个新的 cookie 路径(这可能是您想要的 行为)。比较熟悉的人 请 jQuery cookie 插件 如果我错了,请纠正我,我 没怎么用过。
然后在 OnLoad 中它正在执行 基本上相反。它发现 tabStrip,从 cookie,然后获取 domElement cookie 中索引处的选项卡 并告诉 tabStrip 选择那个 domElement。
这似乎在 Chrome 和 IE 中运行良好,但在 FFox 3 中可能存在一些问题。
我希望 Telerik 团队考虑将其添加到他们的 API 中,因为我觉得它是一个非常有用的功能,已经融入其中。抱歉,如果它已经存在,但我在文档中找不到它。
【讨论】: