問題タブ [modelbinders]
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 - カスタムモデルバインダーでのModelState値の設定
ASP.NETMVC2で次のようなカスタムモデルバインダーを使用しています。
このバインダーからコントローラーアクションに戻ると、アクションのパラメーターとして提供されているビジネスオブジェクトが正しく変更されます(行obj.Created = .... work)。
ただし、ModelStateは更新されません。これを知っているのは、ビジネスオブジェクトのSlugプロパティにRequiredがあり、カスタムモデルバインダーでModelStateDictionaryを変更して、Slugを提供しているにもかかわらず(上記のように)、ModelState.IsValidはまだfalseです。
デバッグセッションのウォッチウィンドウにModelState["Slug"]を配置すると、エラー(1)があると表示されるため、空であるため失敗します。
カスタムモデルバインダーコード内のModelStateを正しく変更するにはどうすればよいですか?
asp.net-mvc - カスタムモデルバインダーでデータストアにアクセスする適切な方法は何ですか?
カスタムモデルバインダーにデータアクセスを適切に実装するにはどうすればよいですか?
コントローラの場合と同様に、IContentRepositoryを使用して、コンストラクタで実装クラスのインスタンスを作成します。したがって、後の段階でIoC(DI)を組み込む準備ができています。
今、私はモデルバインダーに似たものが必要です。バインダーでDBルックアップを行う必要があります。私はコントローラーで行うのと同じ方法でそれを行うことを考えていますが、私は提案を受け入れています。
これは私のコントローラーの1つからのスニペットであるため、コントローラーでどのように実行しているかを想像できます。
asp.net-mvc-2 - ModelBinders、複雑にネストされた型とインターフェイス
インターフェイスにバインドする必要があるシナリオがあります-正しい型を作成するために、正しい具象型を作成する方法を知っているカスタムモデルバインダーがあります(異なる場合があります)。
ただし、作成されたタイプにはフィールドが正しく入力されていません。ここで目がくらむほど単純なものが欠けていることはわかっていますが、モデルバインダーが作業を続けてバインドするために必要な理由、または少なくとも何をする必要があるかを誰か教えてください。プロパティ?
私の場合のモデルは、IProduct プロパティを持つ複合型であり、入力する必要がある値です。
モデル:
asp.net-mvc - ValueProvider.GetValue 拡張メソッド
このようなモデルがあります。
ご覧のとおり、2 つのプロパティは列挙型です。
ここで、私は自分のモデル バインダーを使用したいと考えています。
ので、私は持っています;
問題は、プロパティごとにヒープがあり、try catch ブロック全体を実行する必要があることです。
私ができると思ったのは、ブロック全体を実行する拡張メソッドを作成することであり、渡す必要があるのはモデル プロパティと列挙だけです。
だから私は次のようなことができます。
quickQuote.state = bindingContext.ValueProvider.GetModelValue("state", ...)
等
これは可能ですか?
asp.net-mvc - カスタムモデルバインダーからデータベースにアクセスしても大丈夫ですか?
HttpPostからデータを取得し、データベースからデータを取得するオブジェクトがあるとします。ModelBinderが、投稿から欠落しているデータのデータベース/リポジトリに移動できるようにしたいと思います。実際には、これは良い考えですか、それとも悪い考えですか。
c# - DefaultModelBinder のテスト時の NullReferenceException
BDD/TDD 手法を使用してプロジェクトを開発しており、コースを維持するために最善を尽くしています。私が遭遇した問題は、DefaultModelBinder の単体テストです。mspec を使用してテストを記述しています。
バインドしたい次のようなクラスがあります。
これが、仕様コンテキストを構築する方法です。私は偽のフォーム コレクションを構築し、それを bindingContext オブジェクトに詰め込んでいます。
最後に、仕様の 1 つから .BindModel() を実行すると、仕様が null 参照例外をスローします。
それが何であるかの手がかりはありますか?
必要に応じて、お気軽にお問い合わせください。私は何かを当然のことと思っていたかもしれません。
asp.net - ASP.Net MVC のエレガントな UI と ModelBinder の承認
私たちは、承認の内容が分野横断的な懸念事項であることを認識しており、私たちのビューでビジネス ロジックをマージすることを避けるためにできる限りのことを行います。
しかし、ビューをビジネス ロジックで汚染することなく、現在のユーザー ロールを使用して UI コンポーネント (ウィジェット、フォーム要素、テーブルなど) をフィルタリングするエレガントな方法はまだ見つかりません。同じことがモデル バインディングにも当てはまります。
例
形態:プロダクトクリエーション
田畑:
- 名前
- 価格
- 割引
役割:
ロール管理者
- 名前フィールドの表示と変更が許可されています
- 価格フィールドを表示および変更できます
- 割引を表示および変更できます
ロール管理者アシスタント
- 名前の表示と変更が許可されています
- 価格の表示と変更が許可されています
Fields
各役割に示されているものは異なります。「管理者アシスタント」の役割もmodel binding
無視する必要があります。discount field
どのようにしますか?
asp.net-mvc - ASP.NET MVC 2:ForeignKey関係とデフォルトのModelBinderの奇妙さを備えたLinq to SQLエンティティ
もう一度、Linq to Sql と MVC Model Binder で問題が発生しました。
Linq to Sql で生成されたクラスがあり、それらを説明するために、次のようになります。
「ユーザー」は、「クライアント」および「サイト」と関係があります。管理ユーザーはクライアントまたはサイトにバインドされていないため、User クラスには null 許容の ClientID と SiteID があります。
これで、ユーザーが「ユーザー」オブジェクトを編集できるビューができました。このビューには、すべての「ユーザー」プロパティのフィールドがあります。フォームが送信されると、適切な「保存」アクションが UserController で呼び出されます。
ここでの問題は、値が FormCollection にある場合でも、ClientID が設定されず、常に null であることです。
何が問題なのかを把握するために、Linq to Sql デザイナーで生成されたクラスの ClientID および SiteID のゲッターとセッターにブレークポイントを設定しました。次のことに気付きました: SiteID が設定され、次に ClientID が設定されていますが、Client EntityRef プロパティが null 値で設定されているため、ClientID も null に設定されています! Client プロパティを設定しようとしている理由と内容がわかりません。Site プロパティ セッターが呼び出されることはなく、Client セッターのみが呼び出されるためです。
次のように FormCollection から ClientID を手動で設定します。
以前にすでに null に設定されていたため、「ForeignKeyReferenceAlreadyHasValueException」をスローします。私が見つけた唯一の回避策は、生成された部分 User クラスをカスタム メソッドで拡張することです。
しかし、これは満足のいく解決策ではありません。私はそれがこのように動作するべきではないと思いますか?
誰か教えてください。これまでのところ、Linq to Sql は私を夢中にさせています!
よろしくお願いします
asp.net-mvc-2 - ASP.NET MVC 2 - このシナリオのカスタム モデル バインダーを作成する価値はありますか?
さて、私はこのような複雑なフォームビューモデルを持っています:
これは私のモデルで、ビューで使用します。ビューは次のようになります。
コントローラーは次のようになります。 [HttpPost] public ActionResult PayNow() { //トランザクション モデル Transaction transaction = new Transaction();
トランザクションに必要な値を取得するために Request.Form を使用しています。私はこのようにしたい場合:
カスタム モデル ビッダーを作成する必要があると思います。苦労する価値はありますか?パフォーマンスやその他の面で何か得られることはありますか? または、この種のことを行うことができる他の方法を知っていますか? このシナリオを正しく表現する方法がわからないため、関連するものが見つかりませんでした...よろしくお願いします。
asp.net-mvc-2 - ASP.Net MVC2 CustomModelBinder が機能しない... MVC1 から変更
(これが冗長に思われる場合はお詫びします-関連するすべてのコードを提供しようとしています)
VS2010 にアップグレードしたばかりですが、新しい CustomModelBinder を機能させようとして問題が発生しています。
MVC1 では、次のように記述します。
もちろん、カスタム バインダーを Global.asax.cs に登録します。
現在、 MVC2では、 base.BindModel への呼び出しがすべてが null のオブジェクトを返すことがわかりました。新しい ValueProvider.GetValue() 関数によって表示されるすべてのフォーム フィールドを反復処理する必要はありません。
Google はこのエラーに一致するものを見つけられないので、何か間違ったことをしていると思います。
これが私の実際のコードです:
私のドメイン オブジェクト (カプセル化された子オブジェクトについてあなたが好きなものを推測してください - それらにもカスタム バインダーが必要になることはわかっていますが、3 つの「単純な」フィールド (つまり、基本型) Id、TradingName、および BusinessIncorporated も null に戻ってきます) :
私のコントローラーの方法:
私のカスタムバインダー:
私のバインダー登録:
...そして私の見解からのスニペット(これはプレフィックスの問題でしょうか?)