0

以下は、私のアプリケーションの正確なシナリオです。

  • コントローラー アクションで GUID を生成します。
  • GUID は TempData に格納されます。
  • そのコントローラー アクションから開かれるカミソリ ビュー (MyView.cshtml) で、ViewModel と共に GUID を渡します。
  • ビューには、GUID にバインドされた隠しフィールドがあります。

    @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")', function (result) {

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 は Web サイトでは意味がありませんでしたが、リソースが見つからない場合、Chrome はページをリロードしますが、IE と Firefox は単純に無視します。そうは言っても、そのCSSの参照を削除することでこれを修正できました(これは私のアプリケーションではまったく必要ありませんでした)

于 2013-05-03T04:50:00.510 に答える