如何在Razor MVC中设置隐藏字段的值

时间:2013-09-25 16:24:04

标签: asp.net-mvc-4 razor

在我的应用程序中,我需要将一些值从一个页面(页面A到页面B)传递到另一个页面。 为此我使用Session变量(我不能使用Tempdata,因为它不适用于负载平衡)。 在页面A中,我正在设置会话变量。 在页面B中,我需要检索上面的Session变量。 为此我在页面B中使用隐藏字段。 我不知道如何在第B页中将会话变量设置为隐藏字段。

第A页

[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);
}

Page B

<div style="display:none" >         
    <input type="hidden" value="" id="hdnfilename" />
</div>

1 个答案:

答案 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个变量。保护存储会话变量的最佳方法是将会话模式配置的状态更改为StateServerhttp://msdn.microsoft.com/en-us/library/ms178586.aspx