問題タブ [defaultmodelbinder]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - DefaultModelBinder MVC2 に複数のプレフィックスを追加する
ModelBinding の例のほとんどを見てきましたが、探しているものを収集できないようです。
私は…したい:
投稿時にこのメソッドにバインドする
UserInputModel の場所
慣例では、"InputModel" のないクラス名を使用しますが、BindAttribute で毎回これを指定する必要はありません。
DefaultModelBinder をオーバーライドしようとしましたが、この小さな機能を挿入する適切な場所が見つからないようです。
asp.net-mvc - ASP.NET MVC の byte[] 配列への入力ファイルの自動バインド
デフォルトのバインダーを入力ファイル制御とバイト配列型のプロパティで動作させることができた人はいますか?
ViewModel に Image という名前のプロパティがあり、ビュー名 Image にファイル入力コントロールがある場合、デフォルトのバインダーは次のエラーを発行します。
入力は有効な Base-64 文字列ではありません。非 Base 64 文字、3 つ以上の埋め込み文字、または埋め込み文字の間に非空白文字が含まれているためです。
asp.net - ASP.NET Web フォームのモデル バインダー
何年もの間、私は ASP.NET Web フォーム開発を行っていましたが、次のようなことができる独自のライブラリに甘やかされていました。
概念的には、コードは MVC Model Binder が行うことと非常によく似た処理を行います。つまり、フォームのポストされた値を入力として指定すると、カスタム オブジェクトに入力されます。基本的に、開発者は次のようなモンキー コードを実行する必要がなくなりました。
等々..
現在、このプロプライエタリ ライブラリは、私が関与している新しいプロジェクトでは使用できません。これは Web フォーム プロジェクトです。System.Web.Mvc.DefaultModelBinder
そこで、Web フォームのコンテキストで使用する方法があるかどうか疑問に思っています。目標は、理想的には検証アノテーションを考慮して、ドメイン オブジェクトとその逆のコントロールをシンプルかつ簡単に作成することです。それが不可能な場合は、誰かがこのニーズに対処するためのオープン ソース ソリューションを教えてくれませんか。私は本当にそのようなコードを書き直す気がしません。
前もって感謝します。
asp.net-mvc - 強い型のビューでnull許容のDateTimeフィールドをフォーマットする
モデルにBornDateプロパティを持つPersonクラスがあります。
私は自分の見解でこのフィールドを次のように使用します
問題は、BornDateテキストボックスを使用してPersonインスタンスを編集しているときに、次のようにフォーマットされることです。
時間部分( "dd / MM / yyyy")なしでフォーマットしたいのですが。null許容フィールドであるため、フォーマット文字列でtoStringメソッドを使用できません。
私に何ができる?
jquery - MVC デフォルト モデル バインダー - 複数選択ドロップダウンを IList にバインドする
NHibernate を使用する ASP.NET アプリケーションで MVC 2.0 を使用しています。
別のマッピングされたエンティティとの関係を持つエンティティを表示および保存できるNHibernateを使用して、ビュー、コントローラー、およびデータアクセスレイヤーが機能しています。
人 -- > 場所
HTML ヘルパー HTML.DropDownListFor() を使用して、すべての場所のリストを表示しています。ユーザーは、リストからロケーションの 1 つを選択し、保存を押すことができます。
既定のモデル バインダーは、保存される Person エンティティの Location の値を正しく設定します。この場所は nhibernate マップ エンティティであり、インスタンス化され、ドロップダウン リストで選択された ID 値を持ちます。明らかに、場所を保持するドロップダウン リストには場所の ID しかないため、場所の残りの値は null です。これで結構です。既存の場所への参照を使用して Person を保存しようとしているだけです。
したがって、ここで複雑になります。2 つのエンティティ間の関係を変更する必要があります。これで、Person は多くの場所への参照を持つことができます。
Person.Locations は IList になります
私の質問は、デフォルトのモデル バインダーを取得して複数選択ドロップダウンから選択し、 IListに入力するにはどうすればよいかということです。
Phil Haacked によって説明されているように、構文 [index].PropertyName を使用して、過去にエンティティのコレクションを保存することができました .... http://haacked.com/archive/2008/10/23/model-binding-to -a-list.aspx。
ここでの問題は、ドロップダウン リストしかなく、異なる値を持つ繰り返しキーをモデル バインダーにポストバックすることです。
Person.Location.Id: 2
Person.Location.Id: 4
Person.Location.Id: 5
残念ながら、これは機能しません。場所リストが Null に戻り続けます。
私たちの UI 担当者は、洗練された JQuery プラグインを使用して選択リスト内の項目を表示しているので、別の UI を使用する必要はありません。
何か案は?
asp.net-mvc - 基本型への ASP.NET モデル バインド
View Models がすべて継承する BaseViewModel があります。
私のコントローラーでは、ファクトリ メソッドを使用して、入力に基づいて正しいビュー モデルを返します。
TryUpdateModel を使用して、「TitleOfPublication」キーが含まれていることがわかっている FormCollection にバインドしようとすると、ビュー モデルに設定されません。
これは、BaseOutputViewModel を使用して FormCollection キーをバインドする DefaultModelBinder と関係があると思います。「TitleOfPublication」は含まれていませんが、派生 MagazineViewModel には含まれています。
DefaultModelBinder の BindModel 動作をオーバーライドするために、独自のモデル バインダーを作成しようとしています。すべて正しく配線されており、TryUpdateModel 呼び出しの直後にデバッグできます。
しかし、bindingContext の操作方法がわかりません。派生したビュー モデル プロパティを使用してバインドするように DefaultModelBinder に指示できるようにするには、何を更新する必要がありますか? それとも、私はこれを完全に誤解していますか!
MvcContrib の DerivedTypeModelBinder と同じように、CreateModel をオーバーライドしようとしましたが、バインダーに操作するモデルのインスタンスを与えているため、CreateModel が呼び出されることはありません。Mvc DLL で Reflector を使用すると、モデルが null の場合にのみ CreateModel を呼び出す "BindComplexModel" が存在します。
どんなポインタでも大歓迎です!
乾杯
asp.net-mvc - HttpPost で ModelState が無効な場合、ASP.NET MVC は更新されたモデルを自動バインドします。
私は ASP.NET MVC2 アプリに取り組んでいます。私は、MVC が ModelState とモデル バインディングに関係して舞台裏で行っている、非常に驚くべき、しかし驚くべきことに気付きました。大量のデータを持つ ViewModel があります。一部のフィールドはフォームの一部であり、他のフィールドは単に UI の一部です。HttpPost では、私の Action メソッドは、モデル全体をバインドしようとする DefaultModelBinder を使用しますが、フォームの一部であったフィールドのみが正常に逆シリアル化され、その他はすべて null のままです。それはそれでいいし、理解できる。ModelState が無効な場合は、データベースからモデルを更新し、それらの特定のフォーム フィールドをバインドしてから、同じ編集ビューに戻って関連する ModelState 検証エラーを表示する必要があります。
ここで私の驚きと好奇心が生まれます。フォーム フィールドを更新されたモデルにバインドするUpdateModel()
には、またはを呼び出してTryUpdateModel<>()
、新しく更新されたモデルを渡す必要があると想定していました。例えば:
refreshedModel
しかし、私が見つけたのは、 を呼び出さずに単にビューに戻った場合TryUpdateModel<>()
、更新されたモデルが投稿されたフォーム フィールドの値に自動的にバインドされていたことです!! したがって、TryUpdateModel<>()
ここでは必要ありません。
私がそれを理解できる唯一の方法は、ModelState が無効な状態にあるため、更新されたモデルでビューを返すと、「MVC レンダリング エンジン」が ModelState エラーをループし、それらのプロパティ値を更新された値にバインドすることです。モデル。それは単に素晴らしいです!しかし、私はこの仮定の証明が必要です。これに関するドキュメントはウェブ上のどこにも見つかりません。なぜ/どのようにこの素晴らしい自動バインド動作が発生しているかという私の仮説を誰かが確認できますか、および/またはそれがなぜ/どのように発生しているかについて教えてくれますか?
model-view-controller - MVC Model Binderを使用して、内部の複雑なオブジェクトプロパティのバインドを防ぐ方法は?
私は次のモデルを持っています
コントローラーで:
問題は、バインダーが内部アドレス クラスでさえも検証しようとすることですが、私が気にするのは AddressID だけですが、ModelBinder は City および Street プロパティでさえも検証することを主張します。
内部オブジェクトのIDを検証するためだけに元のModelBinderをオーバーライドするにはどうすればよいですか(私の状況ではAddressIDです)??
簡単な方法はありますか?
asp.net - デフォルトのモデルバインダーは私のモデルクラスをバインドしません
ASP.NET MVC 2の既定のモデルバインダー機能を使用する必要がある投稿を作成しようとしていますが、残念ながらうまくいきません。
チェックアウトボタンをクリックすると、jQueryコードを使用してフォームに動的に入力し、このフォームをサーバーに送信します。これは送信されるフォームです
これは、フォームの送信イベントを処理するjQueryコードです。
これは、呼び出される必要があるコントローラーアクションです
そして最後に、これは関連するCartModelクラスです
ただし、デフォルトのModel Binderは、WebフォームデータをCartModelクラスにバインドしません。Fiddlerを使用すると、次のスナップショットからわかるように、サーバーに送信されたデータが正しいことがわかりました。
なにか提案を?
c# - 継承を持つモデルのasp.net mvcデフォルトモデルバインダー
次の構造を持つ、バインドするフォームがあります。
私のアクションは次のようになります。
データはフォームでやってくる
SaveAttachments アクションでステータスにアクセスすると、ID はありますが、名前はありません。正しく投稿されているように見えますが、適切にバインドされていないのはなぜですか?