【问题标题】:TempData issue in Chrome, while working fine in IE and FirefoxChrome 中的 TempData 问题,但在 IE 和 Firefox 中运行良好
【发布时间】:2013-04-23 22:21:29
【问题描述】:

以下是我的应用程序中的确切场景:

  • 我在控制器操作中生成了一个 GUID。
  • GUID 存储在 TempData 中。
  • 我在从该控制器操作打开的剃刀视图 (MyView.cshtml) 中传递 GUID 和 ViewModel。
  • 视图有一个与 GUID 绑定的隐藏字段。

    @Html.HiddenFor(m => m.CustomGuid)
    
  • 还有另一个控制器操作返回一个 Json 结果,其中包含 TempData 中的 GUID 值。

    [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")', 函数(结果){

if (result.toString().toLowerCase() == $('#CustomGuid').val().toString().toLowerCase()) {
alert('ok');
            }
            else {
                alert('Invalid Identifier.');
                window.location = '@Url.Action("ShowErrorPage", "Controller")';
                return false;
            }
        });

问题是,它在 IE 和 Firefox 中运行良好,但它在 TempData 和 HiddenField 中总是有不同的 GUID,所以每次都会给出“无效标识符”的消息

可能是什么原因?为什么这种行为在 Chrome 中会有所不同?

【问题讨论】:

  • 您应该检查 chrome 是否在两者之间没有对“某事”发出请求,因为 TempData 仅在下一个请求之前存在。您描述的行为(GetGuid() 返回"INVALID_SESSION")似乎无论如何都表明了这一点。
  • 我尝试将警报放在 javascript 函数中,它显示 TempData 和 HiddenField 读数的不同 GUID,并且它们中的任何一个都没有显示“Invalid_Session”...
  • Chrome 是否有可能在两者之间发出请求,而 IE 和 Firefox 没有发出任何此类请求?
  • 这就是我让你检查的,是的...如果 GetGuid 方法返回一个新的 GUID/不同的,那么这个不同的 GUID 什么时候设置?
  • 每次调用控制器操作时都会设置一个新的 GUID。 (比如 Index 是设置新 GUID 并立即启动视图 (MyView.cshtml) 的主控制器操作。中间没有其他请求。

标签: asp.net-mvc google-chrome tempdata


【解决方案1】:

我发现,服务器上缺少一个资源(只是一个轻量级 CSS)文件。但是,该 CSS 在网站中没有任何意义,但如果没有找到任何资源,Chrome 会重新加载页面,而 IE 和 Firefox 则简单地忽略。话虽如此,我可以通过删除该 CSS 的引用来解决这个问题(这在我的应用程序中绝对不需要)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 2014-04-17
    相关资源
    最近更新 更多