0

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

  • 我在控制器操作中生成 GUID。
  • GUID 存储在 TempData 中。
  • 我将 GUID 与从该控制器操作打开的剃刀视图 (MyView.cshtml) 中的 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 中会有所不同?

4

1 回答 1

0

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

于 2013-05-03T04:50:00.510 回答