我有一个 ASP.NET MVC 应用程序。在某个时刻,我在想要用于更新模型的 Controller 方法中获得了 FormCollection。在集合中,并非所有值都是该模型的属性,要更新的属性是列表中的项目,并且该列表也是另一个列表中的项目。像这样的东西(我希望这很清楚):
propertyToUpdate --> model.Items[0].Subitems[0].SomePropertyClass.Value;
我在我的控制器中试过这个:
UpdateModel(model);
问题是这不起作用,我认为这与反射不起作用的事实有关。我去搜索并偶然发现了这篇文章。所以我知道使用前缀参数可以解决问题。但在我的情况下不是,因为属性在模型中作为列表中的项目“更深”。
有谁知道我该如何解决这个问题?
更新:
这是该属性的 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>
这是足够的代码还是仍然缺少一些东西?
更新2:
好的,在所有子属性中我定义了无参数构造函数,现在我调用:
UpdateModel(segmentRequirement, "SegmentRequirement", form.ToValueProvider());
这会更新模型,但 MaterialRequirements 中的所有内容都会重新实例化......:S