Asp.net mvc Chrome中的TempData问题,在IE和Firefox中工作正常
以下是我的应用程序中的确切场景:Asp.net mvc Chrome中的TempData问题,在IE和Firefox中工作正常,asp.net-mvc,google-chrome,tempdata,Asp.net Mvc,Google Chrome,Tempdata,以下是我的应用程序中的确切场景: 我在控制器操作中生成GUID GUID存储在TempData中 我在razor视图(MyView.cshtml)中传递GUID和ViewModel,该视图从该控制器操作打开 视图具有与GUID绑定的hiddenfield @Html.HiddenFor(m => m.CustomGuid) 还有另一个控制器操作,它返回包含TempData中GUID值的Json结果 [HttpGet] public ActionResult GetGuid() {
- 我在控制器操作中生成GUID
- GUID存储在TempData中
- 我在razor视图(MyView.cshtml)中传递GUID和ViewModel,该视图从该控制器操作打开
- 视图具有与GUID绑定的hiddenfield
@Html.HiddenFor(m => m.CustomGuid)
- 还有另一个控制器操作,它返回包含TempData中GUID值的Json结果
[HttpGet] public ActionResult GetGuid() { string result = String.Empty; if (GetTempData("mGuid") != null) { result = GetTempData("mGuid").ToString(); } else { result = "INVALID_SESSION"; } return Json(result, JsonRequestBehavior.AllowGet); }
- 我在MyView.cshtml中编写了以下jquery
原因可能是什么?为什么这种行为在Chrome中会有所不同?我发现,这是一种资源(只是一种轻量级CSS)服务器上缺少文件。但是,CSS在网站上没有任何意义,但是如果找不到任何资源,Chrome会重新加载页面,而IE和Firefox则会忽略。话虽如此,我可以通过删除CSS的引用来修复此问题(在我的应用程序中,这绝对不是必需的)您应该检查chrome是否在这段时间内没有请求“某物”,因为TempData只在下一个请求之前存在。您描述的行为(
GetGuid()
返回“无效会话”
)我试着将警报放在javascript函数中,它显示了TempData和HiddenField读取的不同GUI,以及“无效的会话”也没有显示它们中的任何一个…Chrome是否可能在这两者之间执行请求,而IE和Firefox没有执行任何此类请求?这就是我要求您检查的,是的…如果GetGuid方法返回一个新的GUID/不同的GUID,那么何时设置这个不同的GUID?每次控制器ac时都会设置一个新的GUID被调用。(假设索引是设置新GUID的主控制器操作,并立即启动视图(MyView.cshtml)。其间没有其他请求。
if (result.toString().toLowerCase() == $('#CustomGuid').val().toString().toLowerCase()) {
alert('ok');
}
else {
alert('Invalid Identifier.');
window.location = '@Url.Action("ShowErrorPage", "Controller")';
return false;
}
});