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

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

asp.net - IEnumerable への ASP.NET バインド

ビューにタイプ IEnumerable を渡し、アイテムごとに html.textbox を出力して詳細を入力します。

これをコントローラーに戻すと、コレクションが空になり、その理由がわかりません。

私のGetメソッド:

景色:

POST メソッド:

現時点では、post メソッドにブレークポイントを設定して、何が返されるかを確認しています。

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

asp.net-mvc - カスタム モデル バインダーを使用したコントローラーの単体テスト

私のアプリケーションには、global.asax の DefaultBinder に設定したカスタム モデル バインダーがあります。

コントローラーの単体テストを作成するときは、コントローラーがカスタム モデル バインダーを使用していることを確認する必要がありますが、その方法がわかりません。

私のテストは次のようになります。

この単体テストでは、コントローラーは DefaultModelBinder を使用することになります。コントローラーがカスタム モデル バインダーを使用していることを確認するために、このテストに何を追加できますか?

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

asp.net-mvc - MVC ビューとコントローラー: フォーム送信時にエンティティを再インスタンス化する

強く型付けされたビューに渡される MVC コントローラーでエンティティを操作しています。

フォームがビューに投稿されたときに、更新されたデータを使用してコントローラーでこれらのエンティティを再インスタンス化するにはどうすればよいですか? フォームにはエンティティのすべてのフィールドが含まれているわけではないため、エンティティを再インスタンス化するために必要なすべてのデータがモデル バインディングに存在しません。一部のデータセットのみが送信されます。

投稿された値でエンティティを更新する前に、キー値に基づいてエンティティをリロードすることはありません。これは 1) 非効率的です 2) 元の RowVersion 同時実行フィールドの値を保持しないと、Entity Framework で POCO オブジェクトとの楽観的同時実行が防止されます

しかし、私の質問は、これが推奨される方法ですか?

この質問は、ビューで再送信されず、エンティティをリロードしたくないデータを含むエンティティに適用できます。

ありがとう

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

asp.net-mvc - モデル バインド時にプロパティまたはフィールドが除外された場合、どのような値になりますか?

実際、質問はタイトルにあります-次のような単純なクラスがあるとしましょう:

次のように、アクションメソッドで使用すると:

このアクション メソッド内の product.ID の値は? Int32のデフォルト値になるのでしょうか?IDが参照型の場合はnull? 興味があるだけで、ウェブ上で見つけられませんでした。

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

asp.net-mvc - ASP.NET MVC - モデルがカスタム ViewModel にラップされていない限り、フォームは Null モデルを返します

アプリケーションに 1 組のビューがあり、どちらもモデル アイテムの 1 つに対して同じエディター テンプレートを表示します。2 つのビュー (「追加」と「編集」) のうち、「編集」は正常に機能しますが、コントローラー アクションが投稿を処理するときに「追加」がモデルに対して null を返します。

「追加」ビューにカスタム ViewModel を与えて、Html.EditorFor(p => p.PageContent)単に Model オブジェクト全体で EditorFor() を呼び出すのではなく呼び出すとHtml.EditorFor(p => p)、フォームは正しい null 以外のモデルを返しますが、それに関連する他の問題が発生することがわかりました。クライアント側のスクリプトとコントロール ID (すべてのフィールドに "PageContent_" というプレフィックスが付いているため)。アプリケーション全体のいくつかの異なる場所で同じエディター テンプレート手法を使用していますが、ViewModel に対するこの奇妙な依存関係を示すものは他にありません。

他の誰かが同様の問題を経験したことがありますか?

ビューを編集

アクション (動作中)


ビューを追加

アクション (失敗)


泣く前に「重複」

この質問はこれに関連していますが、この質問は、そこで尋ねられるより一般的な質問ではなく、私が経験している特定の問題を対象とすることを目的としています。

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

asp.net-mvc - 例外によりModelBindingが失敗する

ASP.NET MVC 2.0 Betaアプリで一般的なエラーを受け取り、それをキャッチした場合。次回投稿したときに、自分の投稿に返されたモデルが常にnullであることに気付きました。ModelStateエラーなどをクリアする必要がありますか?

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

asp.net-mvc - MVCモデルバインディング

リンクテキストからMVC検証ライブラリを使用しています。このライブラリを選択したのは、MSEnterpriseライブラリ検証ブロックを使用してすべての検証属性を生成する.NetTiersも使用しているためです。

モデルバインディングがオブジェクトを自動的に検証し、検証の概要を入力することを除いて、正常に機能します。私はこれを通常の行動で信じています。

検証ライブラリには、次のように文書化されているメソッドもあります。

これも問題なく動作します。

私の問題は、検証ライブラリのメソッドを使用すると、エラーメッセージが重複することです。モデルバインディングを使用するだけの場合、エラーメッセージは奇妙に見えます。エラーには、メッセージにプロパティ名が含まれています。

したがって、モデルバインディングのエラーメッセージをフォーマットするか、モデルバインディングを完全に無効にする必要があると思います。

何かお勧め、助けて?

ありがとう。

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

asp.net-mvc - ASP.NET MVC を使用した Tinymce モデル バインディング

ASP.NET MVC モデルから tinymce エディターを自動設定する方法を知っている人はいますか? つまり、tinymce の内容を設定するには、どのコードを使用する必要がありますか?

編集:

私の問題は、tinyMCE がテキストボックスの内容を隠していることです。ブラウザーでページのソースを表示しても、空白で開きますが、正しい情報 (つまり、モデルから) が表示されます。

これが私のコードです:

Javascript:

テキストエリア:

ありがとう、ジャック

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

asp.net-mvc - ASP.NET MVC: ViewModel が Collection/List/IEnumerable の場合に TextBox の状態を維持する方法

ASP.NET MVC 2 Beta を使用しています。スティーブン サンダーソンのテクニック (彼の著書 Pro ASP.NET MVC フレームワーク) を使用してウィザードのようなワークフローを作成できますが、非表示のフォーム フィールドの代わりにセッションを使用してリクエスト間でデータを保持することを除きます。モデルがコレクションではない場合、ページ間を行き来し、TextBox の値を問題なく維持できます。例は単純な Person モデルです。

しかし、IEnumerable を渡すと、これを機能させることができません。私の見解では、モデルを実行して、リスト内の各人物の名前と電子メールの TextBox を生成しようとしています。フォームを正常に生成でき、値を含むフォームを送信してステップ 2 に進むことができます。しかし、ステップ 2 で [戻る] ボタンをクリックすると、フォームが空の状態でステップ 1 に戻ります。以前に入力したフィールドはありません。私が見逃しているものがあるに違いありません。誰か助けてくれませんか?

これが私の見解です:

そして、ここに私のコントローラーがあります:

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

asp.net-mvc - フォーム内の asp.net 画像と HTTPPost

こんにちは、

ここで非常に明白な何かが欠けていると確信しているので、ご容赦ください。

  • 私はMVC 2 Betaを使用しており、いくつかのプロパティ、文字列、int などの通常のものを持つモデルがあります。
  • また、イメージを含むバイト配列もあります。
  • [HTTPGet] 属性で装飾された編集アクション メソッドがコントローラーにあります。
  • このメソッドは、モデルをビューに渡します。ビューは、さまざまな文字列プロパティにバインドする通常のテキスト ボックスと、バイト配列/画像にバインドされる img 要素を持つフォームです。

これはすべて正常に機能し、画像を含むすべてのデータが表示されます。これはすべてかなり標準的なものです。

しかし、ユーザーが同じモデルをパラメーターとして受け入れる [HTTPPost] バージョンのアクション メソッドにフォームを送信すると、image プロパティは null になります。つまり、image プロパティはモデル バインディングの一部ではないようです。

イベントの通常の過程では、いくつかの検証を行い、モデルをビューに戻してレンダリングし、ユーザーが編集が成功したかどうかを確認できるようにします。ただし、モデルを「そのまま」戻すだけです。ビューはモデルに存在しないため、画像を再度レンダリングしません。

ビューに渡す前に(データベースまたはどこからでも)画像を再度取得してモデルに戻すことができることはわかっていますが、それは正しい戦略ですか、それとも何かを見逃していますか?

よろしく、サイモン