我的ViewModel中有一个名为List<AssignablePolicy> AssignablePolicies
的属性。我想使用Jquery创建映射到此列表的项目。所以我使用这段代码:
$('#frmPolicy').append('<input type="hidden" name="AssignablePolicies[].CompanyName" value="' + company + '"/>');
$('#frmPolicy').append('<input type="hidden" name="AssignablePolicies[].PolicyNumber" value="' + policyNumber + '"/>');
$('#frmPolicy').append('<input type="hidden" name="AssignablePolicies[].Amount" value="' + amount + '"/>');
AssignablePolicy包含CompanyName,PolicyNumber和Amount。但是,当我发布表单时,我在viewmodel中的AssignablePolicies中得到null。
但是当我做的时候
Request.Form["AssignablePolicies[].CompanyName"]
隐藏的表单值可用。知道为什么会这样吗?
答案 0 :(得分:2)
使用复合属性时,需要指定每个元素的实际索引。回发后,这些需要连续(或者您需要包含.Index
元素)。这里有一些javascript改编自similar answer,它将修复帖子上的属性。它假设每个集合中的第一个输入具有类policy-start
。
$('form').submit( function() {
$('.policy-start').each( function(idx) {
var prefix = 'AssignablePolicies[' + idx + '].';
$(this).attr('name',prefix + 'CompanyName')
.next(':hidden')
.attr('name',prefix + 'PolicyNumber' )
.next(':hidden')
.attr('name',prefix + 'Amount' );
});
return true;
});
答案 1 :(得分:0)
我有这样的问题。
带有集合的模型类。请求包含密钥但集合为空。简而言之,我在控制器中添加了一个ICollection参数,让mvc绑定数据。
请参阅此解决方案,或许它会对您有所帮助:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx。这个对我有用。但是,我是新手。