以下に示すように、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() 呼び出しを介してページを更新すると、タブの表示は正常に機能します。
追加情報: 上記のアクションは、View() を呼び出して、上記のビューを含むページ全体をレンダリングします。
今回は JavaScript でページをリロードすることで問題を回避できましたが、なぜこれが必要なのかを知りたいので、提案や解決策を教えていただければ幸いです。