問題タブ [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.
asp.net-mvc - IValidatableObject と MemberName が一致しない @Html.BeginCollectionItem
Steven Sanderson による@Html.BeginCollectionItemヘルパーを使用しているときに、 IValidatableObjectインターフェイスを使用してサーバー側でコレクション項目を検証しようとしています。
ユーザーが 2 つの等しいアイテムを選択できないようにしたい。したがって、たとえば、ユーザーが話すイディオムのリストが与えられた場合、これらの値をポストバックできます。
実装は次のValidate
ようになります。
これの問題は、スティーブンのヘルパーが を使用し、次のように見えるためMemberName
、 に渡された ("Idiom") が辞書にあるValidationResult
ものとは異なることです。MemberName
ModelState
Guid
ご覧のとおりIdiom != [Idioms[83c2c6db-0157-42f3-bf3f-f7c9e6bc0a37].Idiom
。
最良の場合、たとえば[Idioms[83c2c6db-0157-42f3-bf3f-f7c9e6bc0a37].Idiom
として渡す方法MemberName
が必要ですが、 からこの情報を取得する方法がわかりませんvalidationContext
。とにかくこれは動的でなければなりません。
これを克服する方法を知っていますか?
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
collections - BeginCollectionItem() は、PostBack に最後に追加されたアイテムのみを提供します
InquiryOrderViewModel
InquiryOrderIndex ビューとアイテムを追加するスクリプト
DetailEditorRow PartialView
PartialView を返す ActionResult
「GET」のアクション結果
「POST」のアクション結果
追加ボタンをクリックすると、アイテムを動的に追加できます。しかし、PostBack の場合、最後に追加された項目のみが表示されます。ポスト ActionResult にブレークポイントを置いて確認しました。PostBack のコレクション全体を取得するにはどうすればよいですか? どこで私は間違えましたか?すべての助けに感謝します。ありがとう!
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
と、関連するアイテムがレンダリングされ、以前に追加されたアイテムの後に追加されます。ユーザーはこのように続けることができます。
アイテムのレンダリングと追加は正常に機能します。しかし、ポストバックの場合、リスト内のアイテムの数を正しく取得しても( POST
ActionResult にブレークポイントを配置してチェックしました)、すべてのアイテムのコンテンツが null 値を示します。これを達成するための正しい方法を教えてください。すべての助けに感謝します。ありがとう!
c# - BeginCollectionItem を使用したリストのネストされたリスト
BeginCollectionItem を使用して、リストの内部リストに項目を追加しています。
私の質問は次のように非常に似ています:ネストされた BeginCollectionItem、ただし、リストを含むオブジェクトはリスト自体でもあります(したがって、参照されている例では、tt はオブジェクトの 1 つのインスタンスではなくリストです)。
私のモデルは次のとおりです。
したがって、私の見解では、完全な週のタイムシートを表すフォームがあるため、日のリスト (公開リスト日) と、それに対して予約する時間のリスト (公開リスト時間) があります。
私のビューは次のようになります: WeeklyTimeSheet.cshtml
TimeSheetDayViewModel.cshtml (エディター テンプレート内)
TimeBookingViewModel.cshtml (エディター テンプレート)
サーバーへのポスト バックでは、TimeBookingViewModel オブジェクトは読み込まれません。助言がありますか?