0

私は Kendo Grid を使用しており、ViewModels のコレクションが Read メソッドに読み込まれています。ここではすべてが順調で、期待どおりに機能しています。

ただし、グリッドで保存ボタンをクリックすると、Update メソッドに提示されたオブジェクトは完全ではなくなり、使用できなくなります。

単純な string[] プロパティが常に null のままであることを除いて、すべてのプロパティが期待どおりに設定されます。

グリッドは次のように指定されます。

@(Html.Kendo().Grid<Occam.Portal.ViewModels.UserViewModel>()
    .Name("SystemUserGrid")
    .Columns(columns =>
        {
            columns.Bound(user => user.UserName);
            columns.Bound(user => user.Email);
            columns.Bound(user => user.Roles):
         }
.Ajax()
.Batch(true)
.ServerOperation(false)
.Events(events => events.Error("error_handler"))
.Model(model =>
    {
        model.Id(m => m.UserId);
        model.Field(p => p.UserName).Editable(false);
        model.Field(p => p.Roles).Editable(false);
    })

.Read("SystemUsers_Read", "Administration")
.Update("SystemUsers_Update", "Administration")
  ))
...

データがグリッドに正しくバインドされているにもかかわらず、Kendo ライブラリが string[] プロパティ Roles を null のままにするのはなぜですか?

剣道のデモやフォーラムでこれに関連するものを見つけることができません.

4

1 に答える 1

2

送信したのとまったく同じモデルを返していないため、新しい UserViewModel List を作成してそれに値を適用しようとしましたが、基本型ではないため string[] の方法がわからないためだと思います。サポートされていないタイプが多数あります。モデルを変更して文字列である RolesStr を含め、モデルに string[] から文字列に (分割などを使用して) 前後に変換するメソッドを含めると、必要なものが得られると思います。コントローラーが UserViewModel を取得したら、メソッドを呼び出してロールを再設定します。

リスト全体を受け入れることができるモデルに静的メソッドを作成し、それらをすべて一度に実行します

public static IList<UserViewModel> SplitEm(IList<UserViewModel> userViewModels)
{
    [Split each RolesStr into Roles]
}
public static IList<UserViewModel> JoinEm(IList<UserViewModel> userViewModels)
{
    [Join all the Roles into each RoleStr]
}

明らかに、Linq を見て、これら 2 つの実装を簡単にします。

于 2013-02-21T06:00:15.137 に答える