如何在 ASP.NET 5 MVC6 中获取布局文件中的会话值
How to get a session value in layout file in ASP.NET 5 MVC6
在 ASP.NET 5 MVC 6 Beta 8 中,我需要在 _Layout.cshtml
中读取会话变量,或者获取对当前 HttpContext 的引用。
请注意:在 ASP.NET 5 中,引用 Session 对象与 ASP.net 4 相比发生了显着变化,如 问题
中所述
在 Beta7 和 Beta8 之间,Context
对象也被重命名为 HttpContext
。
在我当前的控制器中,我目前像这样保存会话变量
public IActionResult Index()
{
HttpContext.Session.SetInt32("Template", (id));
}
在我的 _Layout.cshtml 中,我需要读取上面的会话变量。
我需要以某种方式引用当前的 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
使用剃须刀,您可以通过这种方式获取值
@{
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
}
在 ASP.NET 5 MVC 6 Beta 8 中,我需要在 _Layout.cshtml
中读取会话变量,或者获取对当前 HttpContext 的引用。
请注意:在 ASP.NET 5 中,引用 Session 对象与 ASP.net 4 相比发生了显着变化,如
在 Beta7 和 Beta8 之间,Context
对象也被重命名为 HttpContext
。
在我当前的控制器中,我目前像这样保存会话变量
public IActionResult Index()
{
HttpContext.Session.SetInt32("Template", (id));
}
在我的 _Layout.cshtml 中,我需要读取上面的会话变量。 我需要以某种方式引用当前的 HttpContext 例如
HttpContext.Current.Session.GetInt32("Template");
但我不知道如何在 cshtml 文件中获取当前的 HttpContext。
Context
和 HttpContext
之间的命名有些混乱。您可以使用 Context
属性:
@{ int x = Context.Session.GetInt32("test"); }
MVC 存储库中还有一个与此相关的未决问题:https://github.com/aspnet/Mvc/issues/3332
使用剃须刀,您可以通过这种方式获取值
@{
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
}