問題タブ [modelbinder]
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 - ASP.NET MVC ベータ サポート リストの Model Binder はありますか?
以下のクラスの例を見てください。顧客と 2 つの住所 (LIST から) をフォームに表示したいと考えています。MVC ベータ版のモデル バインダーはこれをサポートしていますか?それとも独自のカスタム バインダーを作成する必要がありますか?
フィールドをどのようにコーディングしますか? このような?
asp.net-mvc - モデル バインダー内でのモデル バインディング
まず、ここで我慢してください。フォーム データをカスタム オブジェクトに正常にマッピングするカスタム モデル バインダーがあります。このモデル バインダー内では、フォーム項目も別のカスタム オブジェクトにマップされます。私ができるはずだと感じているのは、この 2 番目のマッピングを処理する別のモデル バインダーを作成することです。これは簡易版です。
カスタム オブジェクト:
フォームが SubCategories の一連の Id を返す場合、データ リポジトリに移動して SubCategory オブジェクトをハイドレートする必要があります。フォームから、サブカテゴリのリストが次の形式で送信されます。
カテゴリをマップするカスタムを作成するのは明らかに簡単ですが、サブカテゴリをマップするモデル バインダーを作成する (モデル バインダー内でデータ リポジトリからクエリを実行する) のは少し難しいことがわかります。
申し訳ありませんが、読んでいただきありがとうございます。これを明確にするために何か言えることがあれば教えてください。
asp.net-mvc - ASP.NET MVC: TryUpdateModel がすべてのプロパティを更新しない
次のアクションがあります。
プロパティ "Person.Name" が TryUpdateModel によって埋められないことが起こります。
これは私のフォームです:
なぜこれが起こっているのかについて何か考えはありますか?ありがとう
jquery - ASP.NET MVC ModelBinder は GET 要求や jQuery AJAX で動作しませんか?
POST ではなく GET を介して呼び出されたときに、MVC にカスタム モデル パラメータを入力させるのに問題があるようです。
次のようなアクションを呼び出す JavaScript スニペットがあります。
基本的には、別のアクションを呼び出し、呼び出し元のページと同じクエリ文字列を渡します。結果が「OK」の場合は、現在のページを更新します。
アクションは次のように定義されます。
モデルは次のとおりです。
URLの呼び出し(firebugで検証済み)はのようなもの/DoSearch?Query=some+query
です。(こちらも試し/DoSearch?searchParameters.Query=some+query
てみましたが失敗)
何を試しても、パラメーターは常に空になります (null ではなく、すべてのパラメーターがデフォルト値に初期化されているだけです)。
代わりに次のようにアクションを定義すると:
次に、パラメーターが正しく入力されます。ただし、モデルではありません。
私が想定し:
a) オブジェクト モデルへの入力が GET 要求に対して機能しない。
b) 私は何か間違ったことをしている
何か案は?ありがとう。
asp.net-mvc - ASP.Net MVC DefaultModelBinder が POST でプロパティをバインドしない
私は本当に奇妙な問題に直面しています。
GET のコントローラーから正しく入力された強く型付けされたビューがあるというかなり単純なシナリオがありますが、フォームをコントローラーにポストすると、リクエストはすべての適切な値と適切なキー名でいっぱいになります。私のモデルオブジェクトの1つを正しく移入するためのデフォルトのモデルバインダー、およびDMBは正しいオブジェクトを作成しますが、プロパティのいずれも移入しません。それらはすべてデフォルトの状態です。
これは以前は機能していましたが、私が考えることができる唯一の変更は、カスタムモデルバインダーを試したことでした(その後、それを削除しました。まだ使用していないことを確認するために再確認しました)。モデルをリファクタリングして、いくつかの基本クラスを持つようにしました小道具の。
何かご意見は?
asp.net-mvc - asp.net mvc custom modelbinder - 関連付けられたエンティティで更新を実行する方法
カスタム モデル バインダーを使用するときに、関連付けられているエンティティがどのように更新されるかを理解しようとしています。
カテゴリ エンティティとの関係を持つ製品エンティティがあり、フォームのドロップダウンに製品のカテゴリ選択のリストを表示している場合。
ユーザーが新しいカテゴリを割り当て、その変更を製品に保持する必要があります。更新されたカテゴリを割り当てるバインディングはどのように実装されますか? Product のプロパティは簡単ですが、Product.Category = カテゴリをどのように設定しますか?
それが明確であることを願っています:-)
c# - 複雑なリストへのMVCデフォルトモデルのバインド
デフォルトのバインダーを使用してネストされたリストにバインドするのに問題があります。linq to sqlを使用しており、次のデータ構造を持っています
コンペティション<コンペティションクエスチョン<コンペティションクエスチョンチョイス
私のhtmlは次のとおりです
私のコントローラーで試しました
それは私に競争を与えますが、子の要素はありません
私は、リストのコンペティションプレフィックスをHTMLに含めずに、各コレクションに個別にバインドすることなく、より成功しました。
しかし、これをcompetitionQuestionChoicesで機能させることはできません。これは、2つのプレフィックスが必要であり、宣言する方法がわからないためです。
どんな助けでもありがたいです。
nhibernate - NHibernate とドロップダウン リストを使用した ASP.NET MVC 2 RC モデル バインディング
データ アクセスに NHibernate を使用する ASP.NET MVC 2 RC アプリケーションのモデル バインドに問題があります。Ruby on Rails の方法でアプリケーションを構築しようとしており、ドメイン エンティティがデータベースからビューまでずっと使用される非常に単純なアーキテクチャを持っています。
アプリケーションには、次の 2 つのクラスで示すことができるドメイン エンティティがいくつかあります。
編集フォームをレンダリングするビューには、ドロップダウン リストを表示する次のステートメントがあります。
カテゴリ コレクションを保持するために「型指定されていない」ビュー データを使用することは無視してください。
フォーム ポストを受け取るアクション メソッドは次のようになります。TransactionFilter 属性は NHibernate トランザクション処理を追加し、例外が発生せず、検証が成功した場合にトランザクションをコミットすることに注意してください。
私の問題は、product.Category.Id がフォームで選択された値で設定されていることです。たとえば、Category.Id = "2" です。デフォルトのモデル バインダーを使用すると、次のタイプの NHibernate 例外が発生します。
製品にはすでにカテゴリが割り当てられており、その既存のカテゴリの主キーのみが変更されているため、これは非常に理にかなっています。代わりに、別のカテゴリ インスタンスを割り当てる必要があります。
この問題を処理するためにカスタム ModelBinder を作成できると思いますが、これを機能させる簡単な方法はありますか? これを処理するためにドメイン エンティティを変更できますか (また変更する必要がありますか)。
c# - ASP.NETMVC1.0のModelBinderで無効な値を処理する
まず第一に、いくつかのコンテキスト:
ModelBinderに組み込まれているMVCによってオブジェクトに自動的に実体化されるいくつかのオブジェクトをポストバックするフォームがあります。
さらに、DTO(DataTransferObjects)に投稿していることを強調したいと思います。これは、ラインマップをさらに下のエンティティフレームワークエンティティに変換するため、属性を追加する以外は、DTOの変更を望まないためです。
問題
ユーザーが「時間」に無効な値、たとえば「Fubar」を入力した場合、ModelBinderは当然「時間」プロパティを設定しようとしません。ただし、これはintであり、文字列ではないため、デフォルトは0です。
もちろん、これは私にとっていくつかの困難を引き起こします。ユーザーが実際に0を入力したのか、それとも無効な入力が原因であるのかがわからないためです。
ホームロールされたオブジェクトからエンティティ(Entity Framework)マッパーを使用しているため、「時間」プロパティのフットプリントをintに変更できませんか?。MVCには検証が組み込まれていることは承知していますが、MVCが激しく攻撃されており、ASP.NET MVC 2.0で新しい検証が行われることがわかっているため、実装はしません。
解決?
どのフィールドが正しくないかをユーザーに指摘できる必要があります。つまり、何らかのロジックを実行して新しいものをポストバックできる例外(または他の独創的な解決策?)をキャッチできる必要があります。ユーザーが間違ったことを明確にしたところをユーザーに表示します。
私の現在のアイデア:カスタムModelBinderを作成します。
何を指示してるんですか?
asp.net-mvc - ASP.MVC 1.0 complex ViewModel not populating on Action
I'm 3 days into learning MVC for a new project and i've managed to stumble my way over the multitude of issues I've come across - mainly about something as simple as moving data to a view and back into the controller in a type-safe (and manageable) manner. This is the latest.
I've seen this reported before but nothing advised has seemed to work. I have a complex view model:
This maps to (the main Index page):
and a UserControl:
This is returned to the following method:
My problem is that when the view model is rehydrated from the View into the ViewModel, the SearchFragment elements are null. I suspect this is because the default model binder doesn't realise the HTML ItemId and Identifier elements rendered inline in the View map to the SearchFragment class. When I have two extra properties (ItemId and Identifier) in the IndexViewModel, the values are bound correctly.
Unfortunately, as far as I can tell, I must use the SearchFragment as I need this to strongly type the Search UserControl... as the control can be used anywhere it can operate under any parent view.
I really don't want to make it use "magic strings". There's too much of that going on already IMO.
I've tried prefixing the HTML with "Search." in the hope that the model binder would recognise "Search.ItemId" and match to the IndexViewModel "Search" property and the ItemId within it, but this doesn't work.
I fear I'm going to have to write my own ModelBinder to do this, but surely this must be something you can do out-of-the-box??
Failing that is there any other suggestions (or link to someone who has already done this?)
Here's hoping....
Thanks so far. It's pretty obvious this fairly basic requirement is missing from MVC :p