ChromeとFFで完全に機能するツールがあります。ただし、IEのどのバージョンでも、ブラウザーはAjaxプルを実行してデータを取得するよりもキャッシュ情報を表示しています。
これが私の設定です:
ループする基準があります。
@foreach (var item in Model)
{
<div class="sizeTDCriteria">
@Html.DisplayFor(modelItem => item.Text)
</div>
<div class="sizeTDCriteriaAction">
@Ajax.ImageActionLink(Url.Content("~/Content/images/icons/edit.png"), "Edit Criteria", "AddOrEditCriteria", "Management", new { competencySectionId = ViewBag.competencySectionId, criteriaId = item.Id }, new AjaxOptions { UpdateTargetId = "AddOrEditCriteriaFormContainer" }, new { @class = "iconPosition" })
@Ajax.ImageActionLink(Url.Content("~/Content/images/icons/delete.png"), "Delete Criteria", "RemoveCriteria", "Management", new { criteriaId = item.Id }, new AjaxOptions { UpdateTargetId = "CompetenciesManagementWrapper" }, new { @class = "iconPosition" })
</div>
}
ImageActionLinkは、内部に画像を含むActionLinkを作成する単なるヘルパーです。通常のActionLinkでこれを実行しようとしましたが、問題が発生するため、無視してかまいません。また、ImageActionLink全体<img>
をjQueryトリガーを使用したプレーンで変更しようとしましたが、違いはありません。
ユーザーが[編集]リンクをクリックすると、「AddOrEditCriteria」へのajax呼び出しが行われ、そのActionResultが条件を見つけて、PartialViewフォームをdiv「#AddOrEditCriteriaFormContainer」に表示します。これまでのところ、これはすべてのブラウザで正常に機能します。
しかし、その編集を2回クリックすると、ajax呼び出しを行う代わりに、IEは、他のすべてのブラウザーがデータを正しくプルするときに、キャッシュにあったものからPartialViewを表示するだけです(これは、ビューで許可されているため、必要です)。基準を編集します。その間に他の誰かが編集した可能性があります)。
奇妙な部分は、IEが呼び出しを行っているが、どういうわけかサーバーに到達せず、結果304を使用してキャッシュを使用することです。このネットワークキャプチャから次のことがわかります。
URL Method Result Type Received Taken Initiator Wait?? Start?? Request?? Response?? Cache read?? Gap??
/PerformanceMVC/Management/AddOrEditCriteria?competencySectionId=178&criteriaId=369&X-Requested-With=XMLHttpRequest GET 304 text/html 182 B < 1 ms JS Library XMLHttpRequest
/PerformanceMVC/Management/AddOrEditCriteria?competencySectionId=178&criteriaId=369&X-Requested-With=XMLHttpRequest GET 304 text/html 182 B < 1 ms JS Library XMLHttpRequest
/PerformanceMVC/Management/AddOrEditCriteria?competencySectionId=178&criteriaId=369&X-Requested-With=XMLHttpRequest GET 200 text/html 1.53 KB 1.24 s JS Library XMLHttpRequest
最後の1つが最初に発生し、最初の2つはその後に実行され、304のリターンを取得しています。
乱数を使用してajax呼び出しに「breakcache」パラメーターを追加することで修正する方法を見つけましたが、それは良い解決策とは思えません。
IEが原因ですべて更新されるべきではないデータが表示されるため、この問題はユーザーを悩ませてきました。