問題タブ [model-binding]
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-2 - チェックボックスがビュー モデルにバインドされないのはなぜですか?
ビジネス用のビューモデルがあります。このモデルには、住所、連絡先の詳細、および IEnumerable のビュー モデルが含まれています。
チェックボックスを表示するには、エディタ テンプレートを使用します。問題は、編集アクションを行ってフォームを投稿すると、カテゴリが null として返されることです。同様の質問をいくつか読みましたが、うまくいくと思われる解決策が見つかりませんでした。
運が悪いカスタム モデル バインダーを調査しましたが、現在、エディター テンプレートに正しい情報が表示されていないと考えています。チェックボックスには非表示の入力が必要であることはわかっていますが、おそらく私の問題はそこにありますか?
ビジネスビューモデル
CheckboxViewModel
CheckboxEditorTemplate
これは、テンプレートが生成しているもののスニペットです:
c# - jquery からのこのモデル バインディング、何が問題なのですか?
次のアクションがあります。
次のjqueryで呼び出しています:
私の GetGridCell アクションのパラメーターは入力されません (null です)。デバッグすると、 Request.Form[0] が経度と呼ばれ、正しい値を持っていることがわかります。緯度についても同様です。
まったく同じコードを使用すると、$.get
すべて正常に動作します。
私は何を間違っていますか?
c# - asp.net-mvc(2)のModelbindingdoubleに関するCultureInfoの問題
私のJqueryスクリプトでは.
、分数の区切り文字としてを使用するブラウザーのCultureInfo(en-UK)を使用して2つのdoubleを投稿しています。,
私のMVCアプリは、分数区切り文字としてを使用して、ロケールnl-BEのサーバーで実行されています。
解析の問題が原因で、モデルバインディングが失敗します。
javascriptをen-UKに設定し、MVCアプリのモデルバインディングでも同じように設定するのが最善だと思います。しかし、私もその方法がわかりません。
助言がありますか?
c# - データベース エントリから DropDownList を作成し、フォーム送信にバインドする
次のフィールドのみを持つデータベーステーブル内に格納された列挙のエントリがあります:ID
とName
. このテーブル内に格納されている値をフォームの DropDownList 内に表示したいと考えています。次に、ユーザーは値を選択してフォームを送信します。
列挙から DropDownList を簡単に作成する方法を見つけました(ただし、テーブル内のすべてのレコードの Name フィールドを DropDownList に入力するのがおそらく最善でしょう)。ただし、後でフォーム送信の DropDownList を整数値にバインドして、他のフォーム値と共にデータベース (FK - PK) に格納する方法が見つかりませんでした。
そのようなバインディングを行う方法を示すサンプル コードを提供できますか?
更新:素晴らしい答えをありがとう。もう 1 つ質問があります。DropDownList コンテンツを AJAX 経由で取得し、それを ViewModel の DropDownList と SelectList に (ID パラメーターと Name パラメーターの両方を使用して) 入れることは可能ですか? ユーザーの入力に基づいてコンテンツを選択的に取得したいので、取得したデータを ViewModel に入力します。
c# - モデル バインディングを ASP.NET MVC のカスタム オブジェクトと連携させるにはどうすればよいですか?
リッチ クライアント アプリケーションに ASP.NET MVC モデル バインディングを採用したいと考えています。次のコントローラー アクションがあります。
以前の HTML フォームでは、フォームの HTML 入力名が のプロパティの名前と一致する限りUser
、モデル バインドは自動的に行われます。
モデル バインディングもルート データとquerystring
for 値を参照してエンティティにバインドすることは理解していますが、プロパティに一致するクエリ文字列値を入力すると、404
.
これを機能させることはできませんActionResult
。ユーザー クラスのプロパティと一致するパラメーターを使用してルートを構成する必要がありますか?
c# - チェックボックスとモデル バインディングの動的リスト
データベースから動的に作成されたチェックボックスのリストを含むビューを作成し、フォームがポストバックされたときに選択されたもののリストを取得しようとしています。
私のEFモデルにはクラスが含まれています:
これらのリストを含むビューモデルがあります:
私のコントローラーの取得方法:
私の見解:
私のコントローラー投稿方法:
私はそれを機能させることができないようです。私の基本的な質問は、コード スニペットのコメントとして混在していますが、要約すると:
- 私のビューモデルは大丈夫ですか? (単にリストを表示するのではなく、選択したものをキャプチャするために何かを追加する必要がありますか?)
- 各チェック ボックスをレンダリングするには、ビューに正確に何を配置する必要がありますか?
- 投稿後にコントローラーで選択したチェックボックスにアクセスするにはどうすればよいですか?
asp.net-mvc - ASP.NET MVC - 複雑なモデル バインディング シナリオでの URL のクリーンアップ
私が構築しているアプリケーションの 1 つで、データベース内の製品を記述するための非常に柔軟な属性ベースのシステムを構築しました。このシステムでは、各製品に不特定の数の属性を割り当てることができ、各属性は単一の「タイプ」を持つことができます。たとえば、1 つの属性タイプが「Category」で、1 つの属性に割り当てられる値は「Trucks」のようになります。特定の製品に割り当てられる属性の数に制限はありません。また、属性と属性タイプは製品とともにデータベースに保存されるため、私のアプリケーションはそれらが何であるかを事前に知りません。
特定の属性タイプのオプションの機能の 1 つは、「検索可能」かどうかです。属性が検索可能である場合、その値をタイプ名と組み合わせて使用して、製品を検索/フィルタリングできます。たとえば、ユーザーは、属性タイプ「Category」が「Trucks」に等しく、属性タイプ「Color」が「Red」に等しいすべての製品を返すことができます。そこにはあまりにもユニークなものはありません。
私が対処している問題は、システムが属性の型名が何であるかを事前に認識していないため、string category
またはのような読み取り可能な形式でパラメーターを受け入れるアクション メソッドを簡単に作成できないことですstring color
。解決策として、ディクショナリへのバインディングに対する DefaultModelBinder のサポートを利用しました。このアプローチでは、フィールド名を正しい構造でフォーマットするだけでよく、アクション メソッドはIDictionary<string,string> parameters
. これはすべてかなりうまく機能しますが、ユーザーが単一のパラメーターでリンクベースのフィルターを実行している場合、つまり「カテゴリ トラックの製品をもっと見る」など、非常に厄介な URL が発生します。DefaultModelBinder をディクショナリにバインドするには、フィールドの命名パターンが次のようになっている必要があります。
これは信じられないほど冗長であるだけでなく、各キー/値のフィールド名に序数インデックスが含まれている必要があるため、ややイライラします。これは POST フォームでは許容されますが、GET URL では特に理想的ではありません?parameters[0].Key=Category¶meters[0].Value=Trucks¶meters[1].Key=Manufacturer¶meters[1].Value=Ford
。これは醜いだけでなく、URL を変更すると結果セット全体が破壊される可能性があるため、実装が非常に制限されています (ユーザーが URL を変更して 2 番目のパラメーターだけで検索したい場合は、最初のパラメーターを削除する必要があります)。コレクション全体の番号を適切に付け直します)。
私が探しているのは、この種の状況を処理するためのより良い方法です。理想的には、単純にクエリ文字列の値?Category=Red
を取得し、それに応じてフィルター処理したいのですが、アクション メソッドは、バインドする "Category" パラメーターが実際に存在するかどうかを知りません。このようなひどい URL 構造を作成しない、よりクリーンなクエリ文字列パラメーターを使用できるようにする間に何かありますか?
独自のカスタム ModelBinder を作成することも考えていましたが、別の方法があれば避けたいと思います。
asp.net-mvc-2 - アクションで同じタイプの2つのオブジェクトをバインドする
同じタイプの2つのオブジェクトに関する情報を収集するページがあります。ページが送信されると、送信された情報の処理を処理するアクションは、次のようなモデルバインディングを使用しようとします。
それらの一方を正常にバインドできますが、もう一方はバインドできません。誰かが私がこれを機能させるのを助けることができる提案/リソースなどを持っていますか?
必要に応じて、さまざまな部分の実際のコードをガット/名前変更して投稿できます。
c# - 複数のオブジェクトを含むViewModelのモデルバインディング
ProductListingViewModel型の強く型付けされたビューがあり、これにはProductViewModelが含まれています。(両方のカスタムビューモデル)。
ページにいくつかのフォーム要素があり、これらは次のように作成されます。
HTMLを生成します:
デフォルトのモデルバインディングでは、ProductListingViewModelタイプのパラメーターを受け入れるコントローラーアクションに投稿するときに、ProductViewModel.CategoryIdに関連データを入力することがわかっていると予想していました。
選択リストの名前は、CategoryIdプロパティを持つProductViewModelがあることを示しているようですが、コントローラーメソッドに投稿すると、ProductViewModelがnullになります。ProductListingViewModelの構築中にこれを作成すると、nullではなくなりますが、デフォルトのバインダーが期待どおりにプロパティに入力されていないようです。
これはカスタムモデルバインダーの場合ですか、それとも基本的なものが欠けているだけですか?
乾杯。
asp.net-mvc - DefaultModelBinder MVC2 に複数のプレフィックスを追加する
ModelBinding の例のほとんどを見てきましたが、探しているものを収集できないようです。
私は…したい:
投稿時にこのメソッドにバインドする
UserInputModel の場所
慣例では、"InputModel" のないクラス名を使用しますが、BindAttribute で毎回これを指定する必要はありません。
DefaultModelBinder をオーバーライドしようとしましたが、この小さな機能を挿入する適切な場所が見つからないようです。