問題タブ [begincollectionitem]

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 に答える
1251 参照

asp.net-mvc - IValidatableObject と MemberName が一致しない @Html.BeginCollectionItem

Steven Sanderson による@Html.BeginCollectionItemヘルパーを使用しているときに、 IValidatableObjectインターフェイスを使用してサーバー側でコレクション項目を検証しようとしています。

ユーザーが 2 つの等しいアイテムを選択できないようにしたい。したがって、たとえば、ユーザーが話すイディオムのリストが与えられた場合、これらの値をポストバックできます。

実装は次のValidateようになります。

これの問題は、スティーブンのヘルパーが を使用し、次のように見えるためMemberName、 に渡された ("Idiom") が辞書にあるValidationResultものとは異なることです。MemberNameModelStateGuid

ご覧のとおりIdiom != [Idioms[83c2c6db-0157-42f3-bf3f-f7c9e6bc0a37].Idiom

最良の場合、たとえば[Idioms[83c2c6db-0157-42f3-bf3f-f7c9e6bc0a37].Idiomとして渡す方法MemberNameが必要ですが、 からこの情報を取得する方法がわかりませんvalidationContext。とにかくこれは動的でなければなりません。

これを克服する方法を知っていますか?

0 投票する
0 に答える
1308 参照

asp.net-mvc - HtmlHelpers.BeginCollectionItem がアイテムに GUID を追加するのはなぜですか?

機能: ユーザーがビューの PersonList を更新することを選択するたびに、jquery から viewModel を更新したいと考えています。

クラスの人がいる場合:

そして、私は実行するビューに人のリストを含む複雑なビューモデルを持っています:

部分図 :

ユーザーが新しい人物を追加するたびに、個人データが既に入力されている必要がある partialView(_PersonList) の ajax リクエストと asp を送信します。

ajax リクエストが次のように終了した後、パーシャル内の年齢と名前のフィールド:

これは問題なく動作しますが、ユーザーが 20 人を追加することを選択した場合、サーバーに対して 20 のリクエストを行う必要がありますが、これは避けたいと考えています。

そのため、人のリストを部分ビューに送信しようとしました。

私は partialView を変更しました:

しかし、リストを取得した後の入力フィールドは次のようになります。

フォームを投稿すると、ビューモデルの一部として認識されません。問題は、どこからともなく name および id 属性に [0] が追加されていることです

どうすればこの動作を防ぐことができますか?

foreach id を使用すると、次のようになります。 item.Products[4456a32b-eb06-4665-be23-31666d72824e].item.Uid

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

collections - BeginCollectionItem() は、PostBack に最後に追加されたアイテムのみを提供します

InquiryOrderViewModel

InquiryOrderIndex ビューとアイテムを追加するスクリプト

DetailEditorRow PartialView

PartialView を返す ActionResult

「GET」のアクション結果

「POST」のアクション結果

追加ボタンをクリックすると、アイテムを動的に追加できます。しかし、PostBack の場合、最後に追加された項目のみが表示されます。ポスト ActionResult にブレークポイントを置いて確認しました。PostBack のコレクション全体を取得するにはどうすればよいですか? どこで私は間違えましたか?すべての助けに感謝します。ありがとう!

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

asp.net-mvc-5 - 部分ビュー、BeginCollectionItem() にリストを渡す

BeginCollectionItem() を持つ PartialView にリストを渡したい。ここにコードがあります、

InquiryOrderViewModel

InquiryComponentDetailモデル

InquiryOrderIndex一度に複数のアイテムをレンダリングするビューとスクリプト

_DetailEditorRow追加されたメインビューでddlsを提供するPartialView 。class03(これは、何が何であるかを示すためのものですclass03

_ComponentDetailsアイテムをレンダリングするPartialView(一度にリストが渡されました)

リストをまとめて渡してPartialViewを返すActionResult

のアクション結果GET

のアクション結果POST

ユーザーが dropdownlist( ) からアイテムを選択するclass03と、そのアイテムに関連するアイテムが PartialView( _ComponentDetails') を使用してビューにレンダリングされ、追加されます。次に、ユーザーが別の ddl( ) から別のアイテムを選択するclass03と、関連するアイテムがレンダリングされ、以前に追加されたアイテムの後に追加されます。ユーザーはこのように続けることができます。

アイテムのレンダリングと追加は正常に機能します。しかし、ポストバックの場合、リスト内のアイテムの数を正しく取得しても( POSTActionResult にブレークポイントを配置してチェックしました)、すべてのアイテムのコンテンツが null 値を示します。これを達成するための正しい方法を教えてください。すべての助けに感謝します。ありがとう!

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

c# - BeginCollectionItem を使用したリストのネストされたリスト

BeginCollectionItem を使用して、リストの内部リストに項目を追加しています。

私の質問は次のように非常に似ています:ネストされた BeginCollectionItem、ただし、リストを含むオブジェクトはリスト自体でもあります(したがって、参照されている例では、tt はオブジェクトの 1 つのインスタンスではなくリストです)。

私のモデルは次のとおりです。

したがって、私の見解では、完全な週のタイムシートを表すフォームがあるため、日のリスト (公開リスト日) と、それに対して予約する時間のリスト (公開リスト時間) があります。

私のビューは次のようになります: WeeklyTimeSheet.cshtml

TimeSheetDayViewModel.cshtml (エディター テンプレート内)

TimeBookingViewModel.cshtml (エディター テンプレート)

サーバーへのポスト バックでは、TimeBookingViewModel オブジェクトは読み込まれません。助言がありますか?