Wan*_*tIt 2 asp.net-mvc asp.net-mvc-3 asp.net-mvc-4
我有这个代码
[HttpPost]
public ActionResult Index(LoginModel loginModel)
{
if (ModelState.IsValid)
{
// some lines of code . bla bla bla
TempData["loginModel"] = loginModel;
return RedirectToAction("index", "premium");
}
...
}
Run Code Online (Sandbox Code Playgroud)
这个控制器在这里
public ActionResult Index()
{
var loginModel = TempData["loginModel"] as LoginModel;
...
}
Run Code Online (Sandbox Code Playgroud)
现在,当页面加载时,一切似乎都运行正常.但是当我刷新时,一切都搞砸了,它说loginModel就像是null.问题是,我怎么能跟踪当前的登录用户.我启用了表单身份验证.TNX
错误如下
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
Line 22:
Line 23: var loginModel = TempData["loginModel"] as LoginModel;
Line 24: string username = loginModel.username;
Line 25: string password = loginModel.password;
Line 26: premiumModel.username = username;
Run Code Online (Sandbox Code Playgroud)
混乱
但是当我刷新时,一切都搞砸了,它说loginModel就像是null
回答
这是因为您已经读取了TempData密钥,一旦读取密钥,该特定密钥的数据将丢失.
var Value = TempData["keyName"] //Once read, data will be lost
Run Code Online (Sandbox Code Playgroud)
题
我怎么能跟踪当前的登录用户
回答
因此,即使在读取数据后仍然保留数据,您可以像下面一样使用它
var Value = TempData["keyName"];
TempData.Keep(); //Data will not be lost for all Keys
TempData.Keep("keyName"); //Data will not be lost for this Key
Run Code Online (Sandbox Code Playgroud)
TempData也适用于新的Tabs/Windows,就像Session变量一样.
你也可以使用SessionVariable,唯一的主要问题是Session变量与之相比非常重TempData.最后,您还可以跨控制器/区域保持数据.
希望这篇文章能帮到你.
| 归档时间: |
|
| 查看次数: |
3245 次 |
| 最近记录: |