我什至不知道如何描述这个问题,但这肯定很奇怪。因此,控制器操作有时决定不识别特定的 IEnumerable 对象。
假设这是我正在谈论的动作:
public ActionResult Edit(Product model, IEnumerable<ProductSpec> specs)
很简单吧?
这是一个 ProductSpec 类..
private class ProductSpec
{
public int Id { get; set; }
public string Name { get; set; }
public string Value { get; set; }
public bool Whatever { get; set; }
public int ProductId { get; set; }
}
我设法弄清楚的是...
假设视图中有 2 个 ProductSpecs,而用户决定删除一个。然后发生的是具有该 ProductSpec 的行变得不可见 (style="display:none;")
我知道这不是这样做的首选方式,但这是有原因的。
这在大多数情况下都可以正常工作。控制器通常识别/绑定 ProductSpecs。
这是视图的相关部分。
<div id="row1">
<input type="hidden" name="specs[0].Id" value="88888">
<input type="hidden" name="specs[0].Name" value="foo name">
<input type="hidden" name="specs[0].Value" value="foo value">
<input type="hidden" name="specs[0].Whatever" value="True">
<input type="hidden" name="specs[0].ProductId" value="1234">
</div>
<div id="row2" style="display:none;">
<input type="hidden" name="specs[1].Id" value="99999">
<input type="hidden" name="specs[1].Name" value="foo name">
<input type="hidden" name="specs[1].Value" value="foo value">
<input type="hidden" name="specs[1].Whatever" value="False">
<input type="hidden" name="specs[1].ProductId" value="1234">
</div>
因此,IEnumerable 有时是具有 2 个 productSpecs 的 IEnumerable,有时是 null。
我无法弄清楚模式,为什么会发生这种情况?任何类型的方向将不胜感激。
编辑:
更多信息:
Request.Form.AllKeys
实际上包含所有相关的键。specs[0] 和 specs[1] 都具有所有属性等。
但IEnumerable<ProductSpec> specs
实际上是空的。
干杯,T。