以下は、私のアプリケーションの正確なシナリオです。
- コントローラー アクションで 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 で異なる可能性があるのはなぜですか?