問題タブ [custom-model-binder]
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 - カスタムバインダーを使用してユーザー入力を正規化するにはどうすればよいですか?
ユーザーの入力に基づいて、コントローラーのアクションに到達する前に、エンティティのいくつかのプロパティを無効にします。大まかな例(実際のモデルははるかに複雑です)で、クライアントに毎月請求するか隔週請求するかを定義するBillingTypeプロパティがエンティティにあるとします。
ここで、ユーザーが毎月請求することを選択し、DayOfMonthプロパティを15に設定するとします。次に、気が変わって請求タイプを2週間ごとに設定し、2つの2週間目のプロパティを設定して最後にフォームを送信します。必要なのは、未使用のプロパティ(この例ではDayOfMonth)をコントローラーのアクションに到達する前に無効にする方法です。
ユーザーが請求の種類を変更するとき、またはフォームのonSubmitイベントをインターセプトすることで、JavaScriptを介してこれを実行できることを私は知っています。または、アクション内でも、コンテキストに保存する前に、一度実行して忘れる方法が必要です。
これを行う最良の方法は、カスタムモデルバインダーを使用することだと思いますが、私はそれについての経験がありません。新しいオブジェクトを作成しようとしましたModelBindingContext
が、新しいオブジェクト内のフォームデータを取得して解析する方法がわからなかったため、明らかにいくつかの指示が必要です。
c# - Asp.NetWebAPIでのカスタムモデルバインダーの実装中にエラーが発生しました
私はこの非常に奇妙な問題で立ち往生しています。私は派生した
という名前のAPIコントローラーを持っています。これは
ここから派生したコードですAttendanceController
APIControllerFA
ApiController
PostAttendanceメソッドに見られるように、これがコードであるというModelBinder
名前のカスタムがありますAttendenceRegistrationModelBinder
しかし、フィドラーを使用してこのコントローラーにアクセスしようとすると。エラーが発生します
私はここで何が間違っているのですか?
asp.net - Asp.net mvc3 フィルターとカスタム モデル バインダーの実行順序
私のアプリケーションでは、タイムアウトを処理するためのオーダー 0 のアクション フィルターがあります (セッションが null かどうかを確認します。そうであれば、ユーザーをタイムアウト ページに誘導します)。これは、すべてのコントローラー アクションで装飾されます。しかし、タイムアウトが常に適切に処理されないという断続的な動作が見られました。次に、カスタム モデル バインダーで、セッションが null であるかどうかをチェックしていて、その場合は null 参照例外をスローしていることがわかった。
これが断続的である理由を誰かが知っていますか? モーダルバインディングとフィルター実行は異なるスレッドで実行されますか?
c# - asp.net MVC 4でバインダーをチェーンする方法は?
asp.net MVC で最初のモデル バインダーを作成しました。「fm_」で始まる名前を持つすべての入力を持つ純粋な HTML フォームから始めました。
デフォルトのバインダーは問題なく機能し、時間の節約になったと思います。
次に、よりクリーンなプロパティ名が必要だと判断したため、次のように変更しました。
モデル バインダー:
DateTime を解析してデフォルトのバインダーを取得する必要がないように、これを実装する方法はありますか?
注:
フォーム入力名を希望のモデル名に合わせて変更できることはわかっていますが、モデルバインダーの作成経験を積むために意図的にそうしなかったため、この質問に至りました。
質問のタイトルは、私がやろうとしていることの概念的なアイデアに基づいています-次のようなチェーンを作成します:
asp.net-mvc - ASP.NET MVC 4 で、1 つのアクションにカスタムの DateTime モデル バインダーを追加する方法はありますか?
コントローラーのモデル パラメーターにフォームをバインドしようとしています。モデルには DateTime フィールドが含まれており、フォームの送信時にそれをバインドしたいと考えています。フォーム フィールドは、日付が非標準形式で入力されることを想定しています (これはさまざまな理由で変更できません)。
コントローラーのアクションは次のとおりです。
RegistrationDetails クラスで (DateTime) DateOfBirth プロパティをカスタム バインドするだけで済みます。残りのすべてのプロパティは、デフォルトのバインディングで機能します。
アプリ全体の DateTime バインディングをオーバーライドしたくありません - この単一のアクション (または、より簡単な場合はコントローラー) のためだけに。
どうすればこれを行うことができますか?次のように、アクションで ModelBinder 属性を使用してみました。
ただし、RegistrationDetails クラス全体のカスタム バインダーを作成する必要があるようです。これはやり過ぎのようです。
また、クラスが他の場所で使用されているため、モデル プロパティにカスタム フォーマットを設定したくないため、クラスを汚染しています。
MVC4を使用しています。
誰かがこれを処理する最良の方法を教えてもらえますか?
json - EditorFor で JSON にバインドする ASP.Net MVC モデル
非表示のテキスト ボックスで、JSON を介してビュー モデルからコントローラーに情報を渡すことができるようにしたいと考えています。Google Maps API でポリゴンを扱っています。ユーザーがポリゴンを編集すると、javascript を介して非表示の入力に頂点が保存されます。
その結果、次のようになります。
次のビューモデルをビューにバインドしたいと思います:
プロパティの 1 つだけを Json として投稿したいので、これは私が見た例とは少し異なります。誰かが私を正しい方向に向けることができますか? 文字列として渡して、自分でシリアル化/逆シリアル化できることはわかっています。ただし、エレガントな顧客モデル バインダー ソリューションを期待していました。
アップデート
私が見つけたこの投稿に基づいて、一般的な解決策を見つけました: http://mkramar.blogspot.com/2011/05/mvc-complex-model-postback-bind-field.html
私のモデルでは:
そして、global.asax Application_Start() で
残念ながら、これはこれまでのところ私を得るだけです。これにより、フォームの値がクラスにうまくバインドされます。ただし、プロパティを Json としてレンダリングすることは解決しません。ご覧のとおり、カスタム エディター GoogleMapPoints.cshtml を作成しました。これは基本的に、jsonbindable として持つクラスごとに再作成する必要があります。
タイプ/クラスに関係なく、JsonBindable 属性で色付けされたプロパティの EditorFor が常に非表示フィールドで Json としてレンダリングされるように、タイプではなく属性に注意を払う汎用カスタム エディターを使用する方法を知っている人はいますか?
asp.net-mvc - 実行時に 2 つの異なるモデル クラスに動的にモデル バインドされる、厳密に型指定された部分ビュー
ネストされた HomeAddress および MailAddress モデルを呼び出すメインの RegisterModel があります。
住所の部分ビュー
実行時に HomeAddressModel または MailAddressModel のいずれかとバインドできるように、Parital ビューを定義する方法を教えてください。
私のメインの登録ビュー
この質問には 5 つの部分があります: -
- RegisterModel クラスは正しく作成されていますか? これは、それらをネストできる方法ですか?
- Address に対して単一のクラスを使用し、両方の Addresses に対して 2 つの異なるプロパティを使用する必要がありますか? Address home {get;set;} と Address mail{get;set;} のようなもの。はいの場合、次のことを達成する方法。
- Address の部分ビューを作成するには? 別の HomeAddres クラスと MailAddress クラスを使用している両方のシナリオで。または、単一の Address クラスを使用します。
- 上記の両方のアプローチで Main Register View で partialView を宣言する方法。
- [HttpPost] アクション メソッドですべての値を読み取れるようにする方法、つまり RegisterModel 値がバインドされ、個々のアドレスもバインドされます。
asp.net-mvc - ASP.NET MVC カスタム モデル バインダーを使用しているときに、潜在的に危険な Request.Form 値がクライアントから検出されました
ここでエラーを取得します:
値の選択のみを許可するにはどうすればよいですか? すなわち