Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc Chrome中的TempData问题,在IE和Firefox中工作正常_Asp.net Mvc_Google Chrome_Tempdata - Fatal编程技术网

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

$.get('@Url.Action(“GetGuid”,“Controller”)',函数(结果){

问题是,它在IE和Firefox中工作正常,但在TempData和HiddenField中总是有不同的GUID,因此每次都会发出“无效标识符”的消息


原因可能是什么?为什么这种行为在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;
            }
        });