如何在布局文件中获取会话值.净5米6
本文关键字:会话 5米 获取 布局 文件 | 更新日期: 2023-09-27 18:18:22
我需要在我的_Layout.cshtml
中读取会话变量,或者获得对当前HttpContext的引用。
注意:在ASP中。NET 5对Session对象的引用与ASP.net 4相比有了很大的变化,详见这个问题
在Beta7和Beta8之间,Context
对象也被重命名为HttpContext
。
在我的当前控制器中,我当前像这样保存会话变量
public IActionResult Index()
{
HttpContext.Session.SetInt32("Template", (id));
}
In my _Layout。我需要读取上面的会话变量。我需要以某种方式引用当前HttpContext,例如
HttpContext.Current.Session.GetInt32("Template");
但我不知道如何在cshtml文件中获得当前的HttpContext。
Context
和HttpContext
之间的命名有些混乱。你可以使用Context
属性在视图中访问HttpContext:
@{ int x = Context.Session.GetInt32("test"); }
在MVC仓库中也有一个悬而未决的问题:https://github.com/aspnet/Mvc/issues/3332
使用razor,您可以这样获取值
@{
var sessionName = new Byte[20];
bool nameOK = Context.Session.TryGetValue("name", out sessionName);
if (nameOK)
{
string result = System.Text.Encoding.UTF8.GetString(sessionName);
<p> @result</p>
}
}
改变string result = System.Text.Encoding.UTF8.GetString(sessionName);
int intSessionValue = Int32.Parse(sessionName);
或更安全
int intSessionValue = 0;
bool isConvertOK = Int32.TryParse(TextBoxD1.Text, out intSessionValue);
可以检查转换是否成功
if (isConvertOK){
//successful conversion from string to int
}