0

親ビューと同じモデルを持つ 1 つを除いて、異なるモデルを持ついくつかの部分ビューを含むビューがあります。その理由は、親ビューがリスクを表し、リスクが「モーター」か「非モーター」かに基づいて部分ビューがロードされるためです。モーター部分ビューと非モーター部分ビューの両方が、リスクの親ビューにある同じモデルを使用します。

Html.BeginCollectionItem メソッドを使用し、送信時にフォーム データをシリアル化して、親ビューのモデル (リスク) に使用される同じクラスでデータを取得しようとしています。提出物は、モーターおよび非モーターの部分ビューで見つかったものを除いて、すべてのデータを収集することに成功しました。目標は、モーター/非モーター部分ビューのデータを親ビューのリスク モデルと同じオブジェクトにシリアル化することでしたが、受信メソッドをデバッグすると、部分ビューで収集されたすべての属性が null になります。または 0 ですが、値は実際にはフォームに入力されています。

部分ビューの外部に入力されたデータだけでなく、リスク項目にすべてのデータを含めるにはどうすればよいですか?

4

2 に答える 2

0

可能な場合は、コード スニペット (および親ビューと部分ビューで達成したいことに関する追加情報) を提供してください。これにより、直面している問題をよりよく理解し、より正確な回答を提供できるようになります。

私が収集できるものから:

  • いくつかの部分ビューを含むビュー ページがありますが、これらの部分ビューを親ビューのフォーム内にラップしようとしていて、送信しようとすると、これら 2 つの partialViews 内の値が null になっていますか?

このようにアプリを設計する理由の背後にあるビジネス コンテキストを理解していない場合、ここに私の提案があります。

  1. タイプ Risk クラスのプロパティ、タイプ Risk (Motor partialView 用) のプロパティ、およびタイプ Risk (非モーター partialView 用) のプロパティを持つ ViewModel クラスを作成します。
  2. または、特定のセクション (親ビューに表示される 1 つの partialView など) のみを送信する必要がある場合は、その partialView を別のフォーム要素 (例: @Html.BeginForm{} または @Ajax.BeginForm{}) でラップして、それらは別々に提出します。
于 2020-02-03T21:43:52.480 に答える