我有一个如下所示的模型
class ContainerClass
{
string Name { get; set;}
Guid Id { get; set; }
[UIHint("CustomSelectBox")]
List<Member> Members { get; set; }
}
class Member
{
string Name { get; set;}
Guid Id { get; set; }
string SomeProperty { get; set;}
}
class DerivedFromMember: Member
{
string AnotherProperty { get; set;}
}
如果控制器动作是
[HttpPost]
public ActionResult Edit(ContainerClassmodel)
{
return null;
}
谁能告诉为什么默认模型绑定器无法从标签映射列表成员,即
<select id="Members" name="Members" multiple="multiple" >
<option id="Members[0].Id" selected="selected" name="Members[0].Id" value="9b1ea01c-6dad-470d-a6c1-a0f5009ac069">Member One</option>
<option id="Members[1].Id" selected="selected" name="Members[1].Id" value="adf1dbda-9020-45b7-abd7-a0f5009a9b30">Member two</option>
</select>
请注意,已选择所有值。
而以下作品
<input type="hidden" name="Members[0].Id" value="9b1ea01c-6dad-470d-a6c1-a0f5009ac069" />
<input type="hidden" name="Members[1].Id" value="adf1dbda-9020-45b7-abd7-a0f5009a9b30" />
老实说,我知道为什么它不起作用:(因为如果我查看 http 标头以防选择提交的数据对于默认模型绑定器来说是不够的。
Members:9b1ea01c-6dad-470d-a6c1-a0f5009ac069
Members:adf1dbda-9020-45b7-abd7-a0f5009a9b30
谁能告诉标签内要更改什么,以便提交的数据是
Members[0].Id:9b1ea01c-6dad-470d-a6c1-a0f5009ac069
Members[1].Id:adf1dbda-9020-45b7-abd7-a0f5009a9b30