3

私のモデルには、AJAX 経由で読み込まれたときにグリッドをフィルター処理したい列挙が含まれています。

.cshtml コード:

@(Html.Kendo().Grid()
    .Name("Grid")
    .Columns(columns =>
        {
            columns.Bound(x => x.Type);
            columns.Bound(x => x.Status); @*This is my enum*@
        })
    .Filterable()
    .DataSource(ds => ds
                        .Ajax()
                        .ServerOperation(true)
                        .Filter(filter => filter.Add(x => x.Status).IsEqualTo(MyEnum.Updated))
                        .Read(read => read.Action("QueryAlerts", "Alert"))))

AJAX POST のフィルタ リクエストがエラーStatus~eq~'updated'を返しInput string was not in a correct formatます。

データ ソースのフィルタリングを削除し、フィルタリング コントロールを使用して、リクエストが通常どのように渡されるかを次のように確認しましたStatus~eq~2

フィルター値を整数 (例: ) にキャストしようとしましたがfilter.Add(x => (int)x.Status).IsEqualTo((int)MyEnum.Updated)、その結果、モデルから Int32 への無効なキャスト エラーが発生します。これは、Add メソッドによって予期されます。

この問題は Razor を使用して解決できますか? それとも JavaScript の修正ですか?

4

1 に答える 1

0

x.Status のデータ型は何ですか? int の場合、キャストする必要はありません。列挙型のみです。

filter.Add(x => x.Status).IsEqualTo((int)MyEnum.Updated)
于 2013-05-15T16:29:31.203 に答える