我有一个调用Url.Action
不同视图的按钮场景。加载视图后,我想设置适当的按钮(充当标签)。设置值ViewBag
并尝试检索它会产生空字符串。
布局页面通过 AJAX 调用设置选定按钮的值,然后将其重新加载为
$(function () {
var tab = "My Lists";
$('#btnMyLists').click(function () {
$.ajax({
type: "POST",
url: '@Url.Action("SetSelectedTab", "Home")',
datatype: "json",
data: { "tab": tab },
success: function (response) {
window.location.href = '@Url.Action("MyLists", "AssocLists")';
},
error: function (errordata) {
}
});
});
});
我添加了一种方法来将所选选项卡的状态存储在 Home Controller 的 ViewBag 中
[HttpPost]
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public ActionResult SetSelectedTab(string tab)
{
ViewBag.SelectedTab = tab;
return new JsonResult { Data = new { Ok = true, message = string.Empty } };
}
但似乎 ViewBag 变量的检索似乎发生在视图渲染之前,它利用了布局,或者我不确定如何获取 ViewBag 变量以成功设置按钮的选定类。
$(function () {
//DOES NOT WORK - EMPTY STRING
var seltab = "@(ViewBag.SelectedTab)";
if (seltab.length > 0 && seltab == "My Lists")
$(btnMyLists).addClass('homepageHeaderButtonActive').siblings().removeClass('homepageHeaderButtonActive');
})