ASP.NETMVCアプリケーションがあります。ある時点で、モデルの更新に使用したいControllerメソッドのFormCollectionを取得します。コレクションでは、すべての値がそのモデルのプロパティであるとは限らず、更新されるプロパティはリストのアイテムであり、そのリストは別のリストのアイテムでもあります。このようなもの(これが明確であることを願っています):
propertyToUpdate --> model.Items[0].Subitems[0].SomePropertyClass.Value;
私は自分のコントローラーでこれを試しました:
UpdateModel(model);
問題は、これが機能していないことであり、反射が機能していないという事実と関係があると思います。私は検索に行き、この記事に出くわしました。したがって、prefix-parameterを使用すると問題が解決することを理解しています。しかし、私の場合はそうではありません。プロパティは、リストのアイテムとしてモデルの「より深い」位置にあるためです。
誰かが私がこれを解決する方法を知っていますか?
アップデート:
プロパティのEditorTemplateは次のとおりです。
@model Q95.Domain.Property
<li>
@Html.DisplayFor(p => p.Description) :
@Html.DisplayFor(p => p.Quantity.Value)
@Html.DisplayFor(p => p.Quantity.Unit.Description)
<br />
@Html.TextBoxFor(p => p.Quantity.Value)
</li>
このテンプレートは次のように呼ばれます。
<ul>
@Html.EditorFor(model => model.SegmentRequirement.MaterialRequirements[j].Properties)
</ul>
これで十分なコードですか、それともまだ不足しているものがありますか?
Update2:
わかりました。すべてのサブプロパティで、パラメーターなしのコンストラクターを定義し、次のように呼び出します。
UpdateModel(segmentRequirement, "SegmentRequirement", form.ToValueProvider());
これによりモデルが更新されますが、MaterialRequirementsのすべてが再インスタンス化されます...:S