私は本当にこれで混乱しています...まだ。MVCで[バインド(Exclude = "ID")]を理解できません
私は以前これと同様の質問をしていましたが、今はもっと簡単に質問します。
これは多くのサンプルとチュートリアルで確認できます。どのように[Bind(Exclude = "ID")]をモデル全体に置くことができ、モデルの編集を行うことができますか? POSTではモデルのすべてのプロパティをパックするがIDはパックしないと、編集するIDはどのように分かりますか?
ViewModelsを使用していても、おそらくIDなしで作成しています。だからその場合...また、どのIDが編集で更新されたのか分かりますか?
はい、これには「セキュリティ」要素があることを理解しています。人々はIDをハイジャックすることができるので、POST中に人々が値を更新しないようにする必要があります。しかし、編集を正しく処理する方法は何ですか?よくあることは何ですか?
私は非常に些細なものを欠いているように感じる。
はい、モデル上でIDを除外していますので、「クライアント要求がこの値をプレーンテキストで指定しないようにする」を除外しています。だから、今更新するレコードはどうやって分かるの?レコードを更新したい場合は、どのようにしてポスト中のIDをハイジャック不可能な方法で渡すことができますか? –
あなたはしません。不正な値を返信することを防ぐためのものではありません。これはバイナリ条件です。あなたはそれを転記することが許されるか、そうではありません。 IDをポストバックする必要がある場合は、コントローラでチェックするのはあなたの責任であり、明らかに投稿を許可する必要があります。 –
つまり、言い換えれば...私が編集をしている場合、IDでバインド除外をしてはいけません。代わりに、IDを更新する前にログインしているユーザーに属しているかどうかを確認するか、HttpGet中にセッションに貼り付け、HttpPostで比較して同じIDを確認してください。私は正しく考えていますか? –