【发布时间】:2013-07-24 10:06:09
【问题描述】:
我正在尝试根据我传递给包含 Telerik tabStrip 的视图的用户访问级别来显示/隐藏选项卡,如下所示:
@{ Html.Telerik().TabStrip()
.Name("Main_Tabstrip")
.Items(tabstrip =>
{
tabstrip.Add()
.Visible((int)ViewData["UserLevel"] < 2)
.Text("Topic A")
.LoadContentFrom("_TopicATab", "TopicA");
tabstrip.Add()
.Visible((int)ViewData["UserLevel"] < 2)
.Text("Topic B")
.LoadContentFrom("_TopicBTab", "TopicB");
tabstrip.Add()
.Visible((int)ViewData["UserLevel"] < 2)
.Text("Topic C")
.LoadContentFrom("_TopicCTab", "TopicC");
})
但是,当我在用户状态更改后调用生成视图的操作时,尽管视图似乎在更新(我可以单步执行并查看 UserLevel 更改),但选项卡的可见性仍与第一次渲染时一样视图。
如果我随后在浏览器中或通过 JavaScript location.reload() 调用刷新页面,则选项卡可见性工作正常。
附加信息: 上面提到的Action调用View()来渲染包含上述View的整个页面。
虽然这次我能够通过在 JavaScript 中重新加载页面来解决这个问题,但我真的很想知道为什么这是必要的,并且希望得到任何建议或解决方案。
【问题讨论】:
-
您从哪里调用该操作来生成视图,并且您确定您正在编写视图来代替 DOM 中的旧标签条? (也许是包含标签条的
div?)。如果由我决定,我会用 javascript 隐藏标签,而不是重新加载整个标签条。我很想帮助你,但我只熟悉 Kendo(Telerik MVC 的继任者),我似乎无法找到 Telerik MVC 的 API 文档来帮助找到解决方案。 -
@user2420536 - 感谢您的回复。我将此表单称为我的 Home/Index 操作(返回 View()),它调用 _Layout.cshtml,后者又调用 RenderBody() 来呈现上面显示的视图。我最初打算根据需要从 javascript 设置 Grid 的 Visible 属性,但是,我发现这只有在初始状态为真时才有效。如果不需要的话,我真的不希望这些选项卡暂时出现。
标签: asp.net asp.net-mvc asp.net-mvc-4 telerik telerik-mvc