dev*_*ric 5 c# asp.net-core-mvc asp.net-core
在ASP.NET 5 MVC 6 Beta 8中,我需要在my中读取会话变量,_Layout.cshtml或者获取对当前HttpContext的引用.
请注意:在ASP.NET 5中,引用Session对象已经从ASP.net 4发生了显着变化,详见本问题
该Context对象也已重命名为HttpContextBeta7和Beta8.
在我当前的控制器中,我目前保存会话变量
public IActionResult Index()
{
HttpContext.Session.SetInt32("Template", (id));
}
Run Code Online (Sandbox Code Playgroud)
在我的_Layout.cshtml中,我需要阅读上面的会话变量.我需要以某种方式引用当前的HttpContext,例如
HttpContext.Current.Session.GetInt32("Template");
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在cshtml文件中获取当前的HttpContext.
Hen*_*ema 11
之间的命名Context和HttpContext有点令人困惑.您可以使用Context属性在视图中访问HttpContext :
@{ int x = Context.Session.GetInt32("test"); }
Run Code Online (Sandbox Code Playgroud)
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>
}
}
Run Code Online (Sandbox Code Playgroud)
改变
string result = System.Text.Encoding.UTF8.GetString(sessionName);
Run Code Online (Sandbox Code Playgroud)
到
int intSessionValue = Int32.Parse(sessionName);
Run Code Online (Sandbox Code Playgroud)
或者为了更安全
int intSessionValue = 0;
bool isConvertOK = Int32.TryParse(TextBoxD1.Text, out intSessionValue);
Run Code Online (Sandbox Code Playgroud)
这样你就可以检查转换是否成功
if (isConvertOK){
//successful conversion from string to int
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10065 次 |
| 最近记录: |