1

最近、JQuery をバージョン 1.8.2 にアップグレードしましたが、MVC 拡張機能グリッドが空 (空のデータ ソースにバインド) でレンダリングされると、JavaScript エラーが発生するようになったことに気付きました。

JQuery 1.7.1 を実行すると、同じエラーは表示されません。MVC 拡張グリッドは JQuery 1.8.2 と互換性があるはずですか?

具体的には、エラーには JQuery のデータ フィルター メソッドの拡張 (telek.grid.min.js 内) が関係しているようです。

telerik.grid.min.js 内の次の行により、構文エラーが発生します: dataFilter:function(v,w){v=eval("("+v.replace(j,"new Date($1)")+") ");

私のソリューションでは、Kendo と MVC 拡張グリッドが同じページに混在しているため、Kendo には要件ごとに新しいバージョンが必要なため、JQuery をアップグレードする必要があります。

他の誰かがこの動作を見たことがありますか?

4

1 に答える 1

1

もう少し詳しく調べたところ、エラーの原因は、グリッドが空になると、サーバーに Ajax リクエストが送信されることです。この動作を防ぎたいのですが、グリッドがこの要求を簡単にオプトアウトできるようには思えません。グリッドがリクエストのルートをどのように決定するかはわかりませんが、私の場合は「/」ルートに作成されており、応答は Telerik グリッド JS の次のコードと互換性がありません。

dataFilter:function(v,w){v=eval("("+v.replace(j,"new Date($1)")+")"); 

単一のグリッドで簡単なサンプル プロジェクトを作成し、実際のプロジェクトと同じ失敗を観察しました。

前述の通り、JQuery のバージョン 1.7.1 を使用するとエラーは発生しません。

これが JQuery バージョン 1.7.1 で失敗しない理由は、上記の Telerik コードが、例外を消費する try catch ブロック内で実行されるためです。Jquery 1.8.2 では、try キャッチが削除されたため、UI にエラーが表示されます。

この空のグリッド Ajax リクエストの背後にある理由について、Telerik チームからフィードバックをいただければ幸いです。グリッドが空になるたびに「/」ルートがヒットすると、多くの副作用が発生する可能性があるようです。

私の現在の回避策は、空のグリッド Ajax リクエストと、これらのリクエストのいずれかを検出した場合にアクションから単純な日付を返すことによる後続の日付解析 (dataFilter 内) を満たすことです...これにより、上記のコードが例外をスローするのを防ぐことができます.. ..しかし、よりシームレスなソリューションをいただければ幸いです。

于 2013-02-16T21:58:39.307 に答える