当用户进行选择并单击按钮时,我会致电:
public ActionResult Storage(String data)
{
Session["Stuff"] = data;
return null;
}
然后,我将它们重定向到另一个通过
访问数据的页面@Session["Stuff"]
到目前为止,我很高兴。我接下来要做的是,点击新页面上的按钮,我会打电话给:
public ActionResult Pdfy()
{
Client client = new Client();
byte[] pdf = client.GetPdf("http://localhost:1234/Controller/SecondPage");
client.Close();
return File(pdf, "application/pdf", "File.pdf");
}
请注意,PDF化本身效果非常好。问题是,当我第二次访问第二页时(用户看到它并且在原始和重新加载时看起来都很棒),事实证明 Session [“Stuff”] 突然出现了无效的!
我是否通过召回开始了新的会议? 如何持久保留 Session [“Stuff”] 中存储的数据?
答案 0 :(得分:2)
如果您只是在MVC应用程序中存储字符串数据(如方法签名所示),请不要。
将数据作为查询参数传递给需要它的每个方法要容易得多。它更容易管理,不依赖于会话粘性。
要生成相应的链接,您可以将data
传递给您的观看次数,然后使用Html.ActionLink
生成包含相应参数数据的链接。
答案 1 :(得分:2)
以下是会话变量可以返回null
的几个原因:
null
已传入Storage
Session["Stuff"]
设置为null
Session.Clear()
(或Session.Abandon()
)前两个可以通过调试发现。