C# mvc中的数据持久化
我开始使用ASP.NETMVC,我有一个用javascript和css构建的导航。导航是可折叠的,因此菜单折叠时仅需1厘米。 我的问题是,我需要通过单击按钮并在菜单上设置css类来更改状态(折叠/展开)。 但是当我点击菜单项时,页面会被重新加载,因此css类也会丢失 如何正确保存这些数据?在普通视图中,我可以将其传递给我的viewmodel,但如何在我的_layout.cshtml中实现这一点?(我不能在那里设置模型,对吗?) 我试着使用jquery插件“cookies”,但它只在某些时候起作用(我认为问题出在插件的选项范围内-可能我必须设置一个域或其他东西…)。此外,如果解决方案不要求用户允许cookie,那就更好了 我很高兴能得到任何帮助 编辑: 好的,我现在尝试的是: //景色C# mvc中的数据持久化,c#,asp.net-mvc,C#,Asp.net Mvc,我开始使用ASP.NETMVC,我有一个用javascript和css构建的导航。导航是可折叠的,因此菜单折叠时仅需1厘米。 我的问题是,我需要通过单击按钮并在菜单上设置css类来更改状态(折叠/展开)。 但是当我点击菜单项时,页面会被重新加载,因此css类也会丢失 如何正确保存这些数据?在普通视图中,我可以将其传递给我的viewmodel,但如何在我的_layout.cshtml中实现这一点?(我不能在那里设置模型,对吗?) 我试着使用jquery插件“cookies”,但它只在某些时候起作用
@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>
。。。我的隐藏字段在回发后似乎没有保留其值…页面上的值与指向该页面的导航菜单项之间通常存在关联。例如头衔之类的 如果有,那么您可以使用jQuery/Javascript在DOM完全加载后通过读取该值并查找相应的菜单项来设置css类
这绝对不是您使用Cookie的目的。有一个有用的相关问题:那么您是否试图从一个基本页在不同的控制器之间持久化数据?不,我有我的_layout.cshtml(基本上是我的母版页),并且有一个带有导航的div。此导航可折叠。我的问题是,我需要以某种方式存储此导航的状态。所以我需要跟踪导航是折叠还是扩展。哦,谢谢。。渲染似乎是一个很好的方法。我明天会调查这件事。谢谢你迄今为止的帮助!
public class MenuModel
{
public bool IsCollapsed { get; set; }
public string SelectedEntry { get; set; }
public MenuModel(){
IsCollapsed = false;
SelectedEntry = "";
}
}