問題タブ [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.

0 投票する
1 に答える
1413 参照

asp.net-mvc-2 - 派生オブジェクトのリスト用のMVC2Modelbinder

Asp.net MVC 2の既定のModelbinderで動作するさまざまな(派生した)オブジェクトタイプのリストが必要です。

私は次のViewModelを持っています:

また、リストには、さまざまな派生型のオブジェクトが含まれています。

List実装とArrayList実装のどちらを使用するかは関係ありません。すべてがフォームで適切にスキャフォールディングされますが、Modelbinderは、ActionResultにポストバックするときに、派生オブジェクトタイプのプロパティを解決しません。

処理されるさまざまなオブジェクトタイプのリストを取得するためのViewmodel構造の良い解決策は何でしょうか?すべてのオブジェクトタイプ(リスト、リストなど)に追加のリストを用意することは、ビューモデルの構築とドメインモデルへのマッピングの両方で多くのオーバーヘッドが発生するため、私にとっては良い解決策ではないようです。

カスタムモデルバインダーですべてのプロパティをバインドする他のアプローチについて考えると、ここでデータ注釈アプローチ(必要な属性の検証など)を多くのオーバーヘッドなしで使用するにはどうすればよいですか?

0 投票する
3 に答える
1589 参照

asp.net - MVC ライブラリを使用した ASP.NET Web フォームでの属性ベースの検証?

属性ベースの検証に対応する ASP.NET Webforms の方法はありますか。もしそうなら、これが実証されたURL。私はオープンソース プロジェクトを探しているわけではありません。Web フォームで MVC ルーティングを使用できるように、検証フレームワークを使用できますか?

0 投票する
1 に答える
1685 参照

asp.net-mvc - asp.net MVC 1.0 および 2.0 通貨モデルのバインド

ユーザーが「,」「.」を入力できるように、モデル バインディング機能を作成したいと考えています。私のViewModelの二重値にバインドする通貨値など。

カスタム モデル バインダーを作成することで MVC 1.0 でこれを行うことができましたが、MVC 2.0 にアップグレードしてから、この機能は機能しなくなりました。

この機能を実行するためのアイデアやより良い解決策はありますか? より良い解決策は、データ注釈またはカスタム属性を使用することです。

好ましい解決策は次のようなものです...

以下は、MVC 1.0 でのモデル バインディングの私のソリューションです。

0 投票する
5 に答える
32436 参照

c# - ASP.NETMVC-URLからの追加パラメーターを使用したPOSTアクションメソッド

ASP.net MVCを使用すると、フォームではなくURLからのパラメーターを含むコントローラーアクションにフォームをPOSTすることができますか?

例えば

GroupControllerのActionメソッド:

ルート:

投稿されたURL:

この例では、フォームは別のコントローラーに送信されており、モデルの値は正しいですが、他のパラメーターのデフォルト値は0です。

私が期待していた動作は、ModelBinderが、指定されたルートに一致する2つのパラメーターがあることを認識し、GET操作が機能するのと同じ方法でパラメーターに1と42の現在の値を割り当てることです。

この動作はサポートされていませんか、それとも何かが足りませんか?

編集:明確にするShowために、コントローラーのビューEmployeeのフォームには、別のコントローラーに投稿しているフォームが含まれています。私たちはそれを呼ぶことができますGroup

フォームアクションのURLは次のようになります

フォームは次のように宣言されます

のために多くの異なるオーバーロードを試した後Html.BeginForm、フォームアクションURLがブラウザのアドレスバーの現在のURLと一致する場合にのみパラメータがマップされることがわかりました。

したがって、URL/Groups/Create/1/42に移動すると、新しいフォームが表示されます。次にフォームを送信すると、URLルート値がPOSTアクションに渡されます。

0 投票する
4 に答える
6190 参照

asp.net - ASP.NET MVC 2 - ViewModel プレフィックス

異なるモデルが関連付けられているビューで、RenderPartial を 2 回使用したいと考えています。問題は、いくつかのプロパティが両方のモデルに存在することです (ニックネーム、パスワード)。それらには接頭辞がないため、出力では ID または名前も同じです。これで、ニックネームまたはパスワードにモデル エラーがある場合、両方のフィールドが強調表示されます。

メイン ビュー:

ログイン PartialView:

PartialView を登録します。

どうすればこれを変更できますか?

0 投票する
1 に答える
1469 参照

c# - ASP.NETMVCの1つのモデルに対する複数のカスタムモデルバインダー

これは、MVC 1および2に適用される一般的なモデルバインディングの質問です。MVC2がこれに適しているかどうか疑問に思っていますが、ここに私の質問があります。

私はかなり複雑なモデルを持っています:

IEventクラスのカスタムモデルバインダーがあり、基本的にIEventのすべてのバインディングを実行します。リストをバインドするためのデフォルトのモデルバインダーを呼び出しますContacts。これはうまく機能します。

私はDatesLocationsものをバインドしようとする準備ができていますが、私は物事を正しく行っていることを確認したいと思います。

全体として、モデルバインディングの詳細をすべて理解できるかどうかはわかりません。内のリストに複数のモデルバインダーを使用するか、 (現在行っているように)必要なリストのデフォルトバインダーを呼び出すモデルバインダーIEventを1つだけ使用する方がよいでしょうか。IEvent

専門家はどのようにそれを行いますか?:P

0 投票する
2 に答える
2130 参照

asp.net-mvc - Asp.Net MVC 2 - モデル バインダーでフォーム値を反復処理する

このように名前が付けられたフォーム内のアイテムのリストがあります...

これらをこの構造のモデルに変換するカスタムモデルバインダーを作成したい...

したがって、各 ListItem は、入力 ID の末尾の数字と等しい ID と入力フィールドの値に設定された値を持つ MyModelItem に変換する必要があります。

ASP.Net MVC 1.0 では、コレクションを繰り返し処理し、この形式のすべての入力項目を見つけるbindingContext.ValueProvider.Keysためにチェックすることができました。key.StartsWith("ListItem")

ASP.Net MVC 2 の新しい IValueProvider インターフェイスにはキー コレクションがなく、そのインターフェイスを反復処理できません。 ASP.Net MVC 2 で設計時にプレフィックスしか知らないこれらの値にアクセスするにはどうすればよいですか?

0 投票する
1 に答える
1270 参照

asp.net-mvc - ASP.NET MVC 2: EntitySet を使用した Linq-To-Sql エンティティの更新

EntitySet を持つ Linq to Sql Entity があります。私のビューでは、エンティティとそのプロパティに加えて、子エンティティの編集可能なリストを表示します。ユーザーは、これらの子エンティティを動的に追加および削除できます。DefaultModelBinder はこれまでのところ正常に動作し、子エンティティを正しくバインドします。

今私の問題は、削除された子エンティティを削除するためにLinq To Sqlを取得できないことです。新しいエンティティは喜んで追加されますが、削除されたエンティティは削除されません。外部キー関係でカスケード削除を有効にしました。Linq To Sql デザイナーは外部キー関係に "DeleteOnNull=true" 属性を追加しました。次のように子エンティティを手動で削除すると:

これにより、DB から子レコードが削除されます。しかし、モデルにバインドされたオブジェクトに対しては機能しません。私は次のことを試しました:

これは InvalidOperationException をスローします。私はドイツ語の OS を使用しているため、英語のエラー メッセージが正確にはわかりませんが、エンティティにバージョン (タイムスタンプ行?) が必要であるか、または更新チェック ポリシーがないという行に沿って何かを示しています。 . 主キー列を除くすべての列に UpdateCheck="Never" を設定しました。

Linq To Sql で同様の「問題」について多くのことを読んだことがありますが、これらの「問題」のほとんどは実際には設計によるものです。それで、これがうまくいくと思ったようにうまくいかないという私の仮定は正しいですか?子エンティティを手動で反復処理し、それらを手動で削除、更新、および挿入する必要がありますか? このような単純なオブジェクトの場合はうまくいくかもしれませんが、入れ子になった EntitySet などを使用してより複雑なオブジェクトを作成する予定です。これは、何が機能し、何が機能しないかを確認するための単なるテストです。これまでのところ、Linq To Sql にはがっかりしています (単に理解できないだけかもしれません)。このシナリオでは、Entity Framework または NHibernate がより適切な選択でしょうか? または、同じ問題に遭遇しますか?

0 投票する
1 に答える
1699 参照

asp.net-mvc - カスタムモデルのバインダーが起動しない

これは私のカスタム モデル バインダーです。BindModel にブレークポイントを設定していますが、このコントローラー アクションでは起動しません。

...

私の登録:

// これら 2 行の両方を試しました

0 投票する
2 に答える
1123 参照

asp.net-mvc - 派生オブジェクトとそのベースのカスタムモデルバインダーを追加します

私のクラス図:

BaseContentClass

  • ページはBaseContentClassを継承します
  • タブはBaseContentClassを継承します
  • ..。

私がこれをするなら

次に、タイプTabのコントローラーアクションパラメーターが表示された場合、カスタムモデルバインダーは起動されません。

これを行うと解雇されます:

しかし、すべての派生クラスをカスタムモデルバインダーに関連付けるために、global.asax.csに「n」個のAddステートメントを記述したくありませんか?他に選択肢があるかどうかわかりません。