C# ViewModel包含表单发布时未绑定的列表

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

在我的ViewModel中有一个名为“列出可分配策略”的属性。我想使用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 + '"/>');

隐藏的表单值可用。知道为什么会这样吗?

我有一个这样的问题

带有集合的模型类。请求包含密钥,但集合为空。长话短说,我在控制器中添加了一个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;
 });