0

複数の Infragistics jQuery igGrid ウィジェットを使用する MVC4 アプリがあります。水曜日の朝まで、このアプリは非常にうまく機能していました。次に、プロジェクトをバックアップし、新しいマシンに復元しました。while Infragistics jQuery スイートも再インストールしましたが、GAC の依存関係がないため、これは必要ありません。

現在、アプリのグリッドのいずれかで、「インデックスが範囲外でした。負でなく、コレクションのサイズよりも小さい必要があります。」というメッセージが表示されます。グリッドを定義する Razor マークアップの行で、グリッドがレンダリングを試行するときの例外。スタック トレースは次のとおりです。

at System.ThrowHelper.ThrowArgumentOutOfRangeException()
at System.Collections.ObjectModel.Collection`1.set_Item(Int32 index, T value)
at Infragistics.Web.Mvc.GridModel.DataBindInternal()
at Infragistics.Web.Mvc.GridModel.DataBind()
at Infragistics.Web.Mvc.Grid`1.DataBind()
at ASP._Page_Areas_Author_Views_Course_Index_cshtml.Execute() in c:\Development\Educ8\Educ8.Mvc\Areas\Author\Views\Course\Index.cshtml:line 16

これは、アプリケーション内のすべてのグリッドに共通であり、データ ソースが変更されたり、列が欠落したりしたためではありません。グリッド定義の例は次のとおりです。

<section class="index">
    @{
        var grid = Html.Infragistics().Grid(Model.Items.AsQueryable())
            .ID("indexGrid")
            .AutoGenerateColumns(false)
            .PrimaryKey("Id")
            .Height(Model.GridHeight)
            .Columns(col =>
                         {
                             col.For(m => m.Id).HeaderText("Id").Hidden(true);
                         }).DataBind();
    }
    @grid.Render()
</section>

ここでは、データ ソースに存在することを確認した Id 以外のすべての列を削除しました。

詳細: Git コミットをさかのぼると、web.config で接続文字列を暗号化したときにこの問題が発生することがわかりました。暗号化コードは、configProtectionProvider="DataProtectionConfigurationProvider"属性をconnectionStringsセクションに追加します。編集者は、この属性は許可されていないと文句を言ったので、セクションにxmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"属性を追加しました。configurationグリッドで障害を引き起こすのは、この最後の属性の存在です。

4

2 に答える 2

1

あなたは言う

`I then backed up the project, and restored it on a new machine.`

しかし、私が知る限り、暗号値の暗号化と復号化に使用されるMachineKey値は、元のマシンに固有のものです。したがって、あるマシンから別のマシンにコードを移動する場合、MachineKeyは異なり、構成ファイルを復号化することはできません。新しいマシンで接続文字列を再暗号化する必要があると思います。これはローカル暗号化キーを使用します。

おそらく、この記事が役立つかもしれません。

于 2012-10-07T08:44:34.550 に答える
0

Items コレクションが空である可能性があります。

Model.Itemsの代わりに、オブジェクトをグリッド データ ソースとして使用してみてくださいModel.Items.AsQueryable()

于 2012-10-06T16:49:56.943 に答える