属性私のアクションは、デフォルトのモデルバインダーにより結合される、クラスのプロパティを取りますASP.Net MVC3 - バインディングカスタムモデル、デフォルトのモデルバインダー、値の型と[必須]
public ActionResult MyControllerAction(MyModelClass model) { ...
クラスの使用MongoDBのObjectId
値型のようないくつかの非標準的な値の型は、もちろんnullではありません。
私は(行うのに十分に簡単)のObjectIdタイプのカスタムモデルバインダーを作成し、そのような中Application_Start
にそれを追加した場合:
ModelBinders.Binders.Add(typeof(ObjectId), new ObjectIdModelBinder());
...それは、デフォルトのモデルバインダーによって無視されますアクションに直接引数として渡されたモデル値にのみ適用されるように見えます。
これに加えて、[Required]
属性にデフォルト(指定されていない)値が指定されていないと認識されるようです。だから、ナットシェルで
:
- は、どのように私は、モデルの性質を解析するために登録したカスタムモデルバインダーを使用するデフォルトのモデルバインダーを得るのですか?
[Required]
には、そのプロパティのdefault
の値が指定されていないと認識するにはどうすればよいですか?
または、既に私がダウンロードしてプロジェクトで使用できるすべてのものをすでに処理しているものがありますか?
は* *あなたのビューモデルでこれらの派手なタイプを使用しないように単純ではないでしょうか? IMOでは、ビューモデルは非常にシンプルで、より洗練されたタイプへの/からのあらゆる変換がコントローラ内で起こるはずです。 –
確かに、ID値を取るたびにID値を解析して検証するコードスニペットが必要であるという点を除いて、これは私がやっていたことです。私はそれをモデルのバインダーに入れるのが簡単だと考えました。私はちょうど今それを考え出したので、私は投稿し、自分の質問に答えます。 –