我开始使用 ASP.NET MVC,并且我有一个使用 javascript 和 css 构建的导航。导航是可折叠的,因此菜单在折叠时只需要 1 厘米。我的问题是我需要通过单击按钮并在菜单上设置 css 类来更改状态(折叠/展开)。但是,当我单击菜单条目时,页面会重新加载,因此 css 类也会丢失。
我怎样才能正确地保存这些数据?在普通视图中,我可以将它传递给我的视图模型,但是如何在我的 _layout.cshtml 中执行此操作?(我不能在那里设置模型,对吧?)
我尝试的是使用 jquery 插件“cookies”,但它有时只能工作(我认为问题出在插件选项的某个地方 - 也许我必须设置一个域或其他东西......)。此外,如果解决方案不需要用户允许 cookie,那就太好了。
我很高兴有任何帮助!
编辑:好的,我现在尝试的是:
//风景
@model NHibernateSimpleDemoMVC.Models.MenuModel
....
<a id="togglemenu" />
@Html.HiddenFor(x => x.IsCollapsed, new { @id = "collapsedHdn" })
...
<script>
jQuery('#togglemenu').click(
function () {
if (jQuery("#collapsedHdn").val() == "true") {
jQuery("#collapsedHdn").val("false")
} else {
jQuery("#collapsedHdn").val("true")
}
});
jQuery('#nav > li').click(
function () {
var name = jQuery(this).attr("id");
jQuery("#selectedHdn").val(name);
}
);
jQuery(document).ready(function () {
//set selected node
if (jQuery("#collapsedHdn").val() == "true") {
... collapse ...
}
if (jQuery("#selectedHdn").val() != "") { //this is always empty ("")
var name = "#" + jQuery("#selectedHdn").val();
jQuery(name).addClass("current");
}
});
</script>
//该模型
public class MenuModel
{
public bool IsCollapsed { get; set; }
public string SelectedEntry { get; set; }
public MenuModel(){
IsCollapsed = false;
SelectedEntry = "";
}
}
...我的隐藏字段在回发后似乎没有保持其价值...