問題タブ [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-3 - リストの非 Null 値のみをバインドするように MVC Model Binder を取得するにはどうすればよいですか?
この質問に続いて、MVCモデルバインダーに要素をリストにバインドさせる値がある場合にのみ要素をバインドする方法があるかどうか疑問に思っていました。たとえば、同じ名前の 3 つの入力を持つフォームがあり、1 つの値が入力されていない場合、3 つの要素を持つリストの MVC バインドを停止するにはどうすればよいですか?そのうちの 1 つが null です。
asp.net-mvc-3 - デフォルトのモデルバインダーがフィールドにバインドされない理由はありますか?
私は ASP.NET MVC3 を使用していますが、デフォルトのモデルバインダーがパブリック プロパティにバインドされているが、パブリック フィールドにはバインドされていないことに疑問を抱いています。
通常、モデル クラスをプロパティで定義するだけですが、いくつかのフィールドを含む定義済みのクラスを使用することもあります。そして毎回、モデルバインダーはフィールドが好きではないことをデバッグして覚えておく必要があります。
質問: その背後にある理由は何ですか?
asp.net-mvc-3 - MVC3非シーケンシャルインデックスとDefaultModelBinder
MVC 3.0のデフォルトのモデルバインダーが非シーケンシャルインデックス(単純なモデルタイプと複雑なモデルタイプの両方)を処理できるというのは本当ですか?私はそれがすべきであることを示唆する投稿に出くわしました、しかし私のテストではそうではないようです。
与えられたポストバック値:
そしてコントローラーメソッド:
ロードされる値はアイテム0と1のみです。項目4は単に無視されます。
カスタムインデックス(リストへのモデルバインディング)を生成するための多くのソリューションを見てきましたが、それらはすべて以前のバージョンのMVCをターゲットにしているように見え、ほとんどは少し「ヘビーハンド」のIMOです。
私は何かが足りないのですか?
asp.net-mvc-3 - MVC3フォームは、リストパラメーターを使用してアクションに単一の入力を送信します
単一の非表示の入力フィールドを使用して整数のリストを格納するサード パーティ コントロールがあります。このコントロールは、サイト全体のさまざまなフォームで使用されています。
送信された値 (Fiddler に表示される) は次のとおりです。
コントローラーのアクションは次のようになります。
予想どおり、DefaultModelBinder は整数のリストを解析できません。入力値の形式を変更する機能があることを考えると、デフォルトのモデル バインダーがこれを解析できるようにする形式はありますか?
アクションを簡単に変更して、文字列パラメーターを持ち、解析を自分で処理することもできますが、モデル バインダーにこれを実行してもらいたいと思います。フォームの送信を傍受し、データ/データ型を JSON (または他の形式) にスクレイプ/変更することもできますが、このアプローチは避けたいと思います。もう 1 つのオプションは、カスタム モデル バインダーを作成することですが、これは少しやり過ぎのように思えます。
おすすめは?
asp.net-mvc - モデル値を DefaultModelBinder.BindModel に渡す前に操作する
ビュー モデルの一部のdecimal
およびdecimal?
プロパティは、他のデータ注釈とともに「パーセント」データ型としてマークされています。次に例を示します。
ユーザーがデータを入力する方法にある程度の柔軟性を持たせたいと思います。つまり、パーセント記号、中間スペースなどの有無にかかわらず、動作を使用して、チェックや追加DefaultModelBinder
などのすべての機能を取得したいRangeAttribute
適切な検証メッセージ。
モデル値を解析して変更し、それを渡す方法はありますか? これが私が試みていることですが、実行時例外が発生しています。(実際の解析ロジックは無視してください。これは最終的な形式ではありません。この時点でモデル置換の問題に興味があるだけです。)
asp.net-mvc - 複合型のネストされたオブジェクトを持つ属性includeおよびexcludeプロパティをバインドします
わかりました、これは奇妙です。ASP.NETMVCで複合型のネストされたオブジェクトでBindAttribute
'sInclude
とプロパティを使用できません。Exclude
これが私がしたことです:
モデル:
HTTP POSTアクション:
意見:
まったく動作しません。BindAttribute
ここに記載されているようにforEnquiry
クラスを定義した場合にのみ、これを機能させることができますか?
c# - ModelStateに必要なすべての値が含まれているにもかかわらず、DefaultModelBinderがモデルをバインドしない(常にnull)
サンプルのASP.NETMVC3アプリケーションを使用しています。を使用してログイン要求を送信することにより、作業中のプロジェクトのAPIの概念実証に取り組んでいますHttpWebRequest
。データをJSONとして送信し、コンテンツタイプ「application/json」を使用しています。
これが私が持っている方法です:
問題は、私が期待するすべてのキーと値が含まれているにもかかわらずModelState
(たとえば、Dictionaryには{"UserName" = "username"、 "Password" = "password"、 "RememberMe"=true}が含まれていることです。 LogOnModelクラス)、model
メソッドを呼び出すたびにオブジェクトはnullになります。
「application/x-www-form-urlencoded」を使用する場合、この問題は発生しません。私も追加して、追加せずに試しました
私のApplication_Start
方法に。
上記のメソッドにリクエストを送信するために使用しているコードは次のとおりです。
asp.net-mvc-3 - ネストされたプロパティ値をバインドするためのカスタム モデル バインダー
これが必要な理由: コントローラーの 1 つで、アプリケーションの残りの部分とは異なる方法ですべての Decimal 値をバインドしたい。Model Binder を Global.asax に登録したくない (経由ModelBinders.Binders.Add(typeof(decimal), new DecimalModelBinder());
)
DefaultModelBinder
クラスから派生させてそのBindProperty
メソッドをオーバーライドしようとしましたが、それはモデル インスタンスの直接の (ネストされていない) Decimal プロパティに対してのみ機能します。
私の問題を示すために、次の例があります。
このソリューションはModel
のプロパティを 999 に設定するだけで、のDecimal
プロパティには何もしません。これは、のオーバーライドでが呼び出されたためだと認識していますが、10 進数のプロパティを処理するときにモデル バインダーを使用するように基本クラスを説得する方法がわかりません。DecimalContainer
DecimalNested
base.BindProperty
DecimalModelBinder
BindProperty
asp.net-mvc - ネストされたオブジェクトでのASP.NETMVC3検証が期待どおりに機能しない-親オブジェクトではなく、子オブジェクトを2回検証します
ASP.NET MVC 3を取得して、複雑なネストされたオブジェクトからフォームを生成しようとしています。予期しない検証動作が1つ見つかりましたが、それがDefaultModelBinderのバグであるかどうかはわかりません。
2つのオブジェクトがある場合、「親」を「OuterObject」と呼び、タイプが「InnerObject」(子)のプロパティを持ちます。
InnerObjectは次のとおりです。
あなたは私が両方に行った検証に気付くでしょう..いくつかの値が「テスト」に等しくないことを言うためのいくつかのダミー検証。
これが(Index.cshtml)に表示されるビューは次のとおりです。
..そして最後にここにHomeControllerがあります:
モデルがDefaultModelBinderによって検証されると、「InnerObject」の「Validate」メソッドは2回ヒットしますが、「OuterObject」の「Validate」メソッドはまったくヒットしません。
「InnerObject」からIValidatableObjectを削除すると、「OuterObject」のIValidatableObjectがヒットします。
これはバグですか、それともそのように機能することを期待する必要がありますか?私がそれを期待する必要がある場合、最良の回避策は何ですか?
c# - DefaultModelBinder.ResourceClassKeyからリソースファイルを取得していません
私のMVC3プロジェクトでは、Global.Application_Start()で、
App_GlobalResourcesには2つのリソースファイルもあります。
フランスのリソースがまったく使用されていないのはなぜですか?
(DefaultModelBinder.resxから正しい値を取得しています。)