在我的应用程序中,我需要将一些值从一个页面(页面A到页面B)传递到另一个页面。 为此我使用Session变量(我不能使用Tempdata,因为它不适用于负载平衡)。 在页面A中,我正在设置会话变量。 在页面B中,我需要检索上面的Session变量。 为此我在页面B中使用隐藏字段。 我不知道如何在第B页中将会话变量设置为隐藏字段。
[HttpPost]
public JsonResult GetFileName(string updatedfileName, string orgfileName)
{
Session["OrgFileName"] = orgfileName;
Session["UpdatedFileName"] = updatedfileName;
var result = myService.getFile(updatedfileName, orgfileName);
return Json(result, JsonRequestBehavior.AllowGet);
}
<div style="display:none" >
<input type="hidden" value="" id="hdnfilename" />
</div>
答案 0 :(得分:4)
在“Page B”的控制器中,为会话变量设置ViewBag.MyValue
并将其应用于隐藏的值。
<强>控制器强>
ViewBag.MyValue = Session["MYVALUE"];
查看强>
<input type="hidden" value="@ViewBag.MyValue" id="hdnfilename" />
如果您需要从JavaScript获取会话变量,则需要开发一个操作,该操作将返回会话变量并使用JavaScript / jQuery来使用它,如下所示:
// Controller code
[HttpGet]
public JsonResult GetSessionVarValue(string key)
{
return Json(new { key = key, value = Session[key] }, JsonRequestBehavior.AllowGet);
}
// JavaScript code
var mySessionValue;
$.getJSON("/GetSessionVarValue", "MYKEY", function(data) {
mySessionValue = data.value;
});
您也可以在负载均衡中处理Session
个变量。保护存储会话变量的最佳方法是将会话模式配置的状态更改为StateServer
。 http://msdn.microsoft.com/en-us/library/ms178586.aspx