在jquery中设置会话值并在Controller中获取该值?

时间:2014-05-13 09:10:08

标签: jquery asp.net-mvc-4 session

是否可以在jquery中设置会话值并在控制器post方法中获取该值而不使用任何ajax调用。我试图在jquery

中为会话设置一个列表值
$.session.set('SelectedIdList', selectedIds);

现在想要在Controller post方法中获取这些值

public ActionResult SaveTransactions(BusinessViewModel model, string Submit)
{

  model.SelectedIdsList = (string[])Session["SelectedIdList"];

}

3 个答案:

答案 0 :(得分:1)

你不能在jquery中设置,因为Session是服务器端的东西。

如果确实需要,你必须发送一个ajax调用:

$.ajax({

                url: '@Url.Action("SetSession","Controller")',
                data {session:1},
                success: function (response) {

                },
                error: function () {

                    alert("Error occured!");

                }

            });

在行动中:

[HttpGet]
public Action Result SetSession(string session)
{
Session["key"] = session;
}

答案 1 :(得分:0)

您无法像这样设置和检索,因为两个数据都保存在不同的位置。一个在浏览器中,另一个在服务器中。

From $.session Plugin Author

为window.sessionStorage提供一个简单的接口,同时为跨协议请求提供有限的支持。

ASP.Net会话

这基本上是在服务器端维护的。

答案 2 :(得分:0)

我已经从我的代码中删除了会话我已经占用了一个隐藏字段并循环并将值存储为','我将在控制器中获取该值

      $("#hdnSelectedIdList").val("");
      for (var iCount = 0; iCount < SelectedIdList.length; iCount++) {
            $("#hdnSelectedIdList").val($("#hdnSelectedIdList").val() + ',' + SelectedIdList[iCount]);
        }

@Html.HiddenFor(m=>m.hdnSelectedIdList)

并在控制器中

 model.SelectedIdsList = model.hdnSelectedIdList[0].Split(',');