ユーザーがクリックは、MVCサーバ側(C#の)上JSON - C#のオブジェクトにデシリアライズ
tasks : {
updated : [
{ Id : 123, SomeField1 : 'new value', SomeField2 : 'new value', SomeField3 : 'new value' },
{ Id : 125, SomeField2 : 'new value' },
{ Id : 127, SomeField1 : 'new value', SomeField4 : 'new value' },
{ Id : 129, SomeField2 : 'new value', SomeField3 : 'new value' },
{ ................ }
],
removed : [
{ Id : 345 },
{ Id : 847 }
]
}
を保存するときに、私は、次のJSONを持って、私はViewModelにと.NETは私のviewmodelにこのバックをデシリアライズ持っていますオブジェクト。この例では ですが、このオブジェクトにはId、SomeField1、SomeField2、SomeField3、SomeField4があります。
私が抱えている問題は、クライアントが実際に更新されたフィールドのみを送信するということです。ユーザーがSomeField3を更新しなかった場合は、jsonになくなり、その配列オブジェクトの.NETはSomeeField3としてnullになります。
私はレコードを取得しないで、viewmodelのすべてのフィールドを更新し、SomeField3をnullに設定するときに更新を呼び出します。これは正しいものではありません。 (別のケースでは、テキストが削除され、更新が有効になる可能性があります。
この問題に取り組む最も良い方法は何かわかりません。 あなたの提案を楽しみにしています。
中に処理されますか? – Komal
はい、EF(コードファースト)とUnitOfWork。 – Cranzy
db.Entry(sometable).Property(x => x.somefield).IsModified = trueのように、更新されたフィールドのみをdbで変更するには、.IsModifiedプロパティを使用できます。サーバー側の – Komal