Javascript 使用会话存储复选框的状态
我正在制作一个MVC网络应用程序。我需要在我的主索引页复选框,如果选中将更新其他页面上的某些选项。我想我可以将这个复选框的状态保存到会话中,以便以后可以访问它 这是正确的方向吗 我还认为会话不能用javascript调用,所以我会用AJAX调用来处理这个问题吗 谢谢你在正确方向上的帮助 编辑: 此应用程序根据用户选择的内容向用户显示多个可能的表格。然后可以在单独的页面上更新这些内容。此复选框将过滤掉可能在这些其他页面上显示的一些选项。使用模型不会起作用(我想),因为我有其他模型被发送到这些页面。我想我可以将这个变量添加到这些模型中,并对其进行更新,但这似乎是一个没有任何实际收益的麻烦,除非我遗漏了什么 编辑2: 这就是我目前所拥有的。它似乎起作用了Javascript 使用会话存储复选框的状态,javascript,asp.net-mvc-4,session,Javascript,Asp.net Mvc 4,Session,我正在制作一个MVC网络应用程序。我需要在我的主索引页复选框,如果选中将更新其他页面上的某些选项。我想我可以将这个复选框的状态保存到会话中,以便以后可以访问它 这是正确的方向吗 我还认为会话不能用javascript调用,所以我会用AJAX调用来处理这个问题吗 谢谢你在正确方向上的帮助 编辑: 此应用程序根据用户选择的内容向用户显示多个可能的表格。然后可以在单独的页面上更新这些内容。此复选框将过滤掉可能在这些其他页面上显示的一些选项。使用模型不会起作用(我想),因为我有其他模型被发送到这些页面。
$(function () {
$("#checkBox1").change(function () {
console.dir($("#checkBox1"));
var choice = $("#checkBox1")[0].checked;
console.log(choice);
$.ajax({
cache: false,
type: "POST",
url: RootDirectory + "Home/SetCheckBoxSession/",
data: { "choice": choice },
success: function () {
alert("Updated session with " + choice);
},
error: function (xhr, ajaxOptions, throwError) {
alert("Error changing session");
}
});
})
})
[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
public void SetCheckBoxSession(bool choice)
{
Session["IsCheckBoxSet"] = choice;
}
有什么想法吗 这将是会话的一种可接受的用法,不过如果您希望此设置具有某种真正的持久性,则应将其添加为用户实体上的属性或使用声明。对于会话,您必须假设会话随时都可能被破坏,因此对应用程序至关重要的内容不应该存储在那里 虽然您不能通过JavaScript直接访问会话,但您可以使用AJAX调用执行一个操作,该操作将从会话中检索值并将其作为响应发送回去。但是,除非您希望在请求之间更改此值,否则实际上并不需要这样做。否则,只需在控制器操作或视图中直接使用
会话
对象即可确定渲染输出。或者,如果您确实需要知道JavaScript中的值,您可以在页面上设置一个JavaScript变量(最好是在应用程序的命名空间中),或者添加一个隐藏字段或包含可以从JavaScript中检索的值的内容
注意:如果使用AJAX路径,请在MVC
控制器的子级中使用操作,而不是Web API的ApiController
。后者无法访问会话
,因为Web API是REST兼容的,REST是无状态的。您的意思是您的复选框没有绑定到模型的任何属性,所以好吧,您可以将状态存储在会话中,是的,您应该通过AJAX调用在会话客户端检索值,无论如何,您的问题实在太广泛了,请提供一些详细信息(例如代码)以获得answer@InvernoMuto我还没有这部分的代码。我还在想我想(应该)朝哪个方向走。我只是在验证这是否可行,我并没有因为缺乏MVC经验而忽略一个更好的选择。