私のウェブサイトが表すオブジェクトに使用しているビューモデルがあります。それをStudent
としましょう。ビューモデルの必須属性のオーバーライド
Add、Details、およびEditビューに同じビューモデルを使用することで、アプリケーションの混乱を最小限に抑えられました。
ただし、パスワードのような編集ビューで編集可能な要素はありません。そこで、私はこれらをビューから削除しました。
ただし、今やModelState.IsValid
はポストバックにfalseを報告します。
これらのすべてのビューで同じビューを使用する方法はありますが、私の編集ビューで必要なステータスを何らかの形で上書きする方法はありますか?
注:私は隠しフィールドを使用することができたことを認識しています。しかし、私はクライアントなどにパスワードなどのデータを送信するのが快適ではありません。私はちょうどここにそれをすべて公開したくないのです。
**ビュー固有の**ビューモデルの作成を検討しましたか?必要に応じて継承を使用します。 – Shyju
属性はコンパイル時のメタデータであり、要求しているものに対して柔軟ではありません。既に提供されている提案の1つに追加すると、共通の基本ビューモデルを作成し、仮想のプロパティを持つことができます。ビュー固有のビューモデルでは、必要なプロパティをオーバーライドし、必要に応じて必要な属性を適用します。 – Nkosi
@Shyju:はい、私はそれについて考えました。単純なものがなければ、私はそのアプローチを取るかもしれません。しかし、私は必要なモデルの数を最小限に抑えることに満足していました。 –