C# ViewModel包含表单发布时未绑定的列表
在我的ViewModel中有一个名为“列出可分配策略”的属性。我想使用Jquery创建映射到此列表的项。所以我使用这个代码:C# ViewModel包含表单发布时未绑定的列表,c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,在我的ViewModel中有一个名为“列出可分配策略”的属性。我想使用Jquery创建映射到此列表的项。所以我使用这个代码: $('#frmPolicy').append('<input type="hidden" name="AssignablePolicies[].CompanyName" value="' + company + '"/>'); $('#frmPolicy').append('<input type="hidden" name="AssignablePo
$('#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 + '"/>');
隐藏的表单值可用。知道为什么会这样吗?我有一个这样的问题 带有集合的模型类。请求包含密钥,但集合为空。长话短说,我在控制器中添加了一个ICollection参数,让mvc绑定数据
请参阅此演练,也许它对您有所帮助:。它对我有用。但是,我是新手。使用复合属性时,需要指定每个元素的实际索引。发回时,这些需要是连续的(或者需要包含
.Index
元素)。下面是一些改编自的javascript,可以修复post上的属性。它假定每个集合中的第一个输入具有类策略开始
$('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;
});
模型上的属性是否有setter?是的,这是属性:public List AssignablePolicies{get;set;}您可能需要实际为其提供一个索引,因为它是一个复合属性,即
AssignablePolicies[0]。CompanyName
。请注意,索引必须是连续的。
$('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;
});