2011-11-19 1 views
0

내 ViewModel에 List<AssignablePolicy> AssignablePolicies이라는 속성이 있습니다. Jquery를 사용하여이 목록에 매핑되는 항목을 만들고 싶습니다. 그래서이 코드를 사용합니다 :ViewModel에는 양식 게시시 바인딩되지 않는 목록이 포함되어 있습니다.

$('#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

모델의 속성에는 세터가 있습니까? – tvanfosson

+0

예이 속성은 다음과 같습니다. public List AssignablePolicies {get; 세트; } – TCM

+0

복합 속성 (예 : AssignablePolicies [0] .CompanyName')이므로 실제로 색인을 제공해야 할 수도 있습니다. 색인은 연속적이어야합니다. – tvanfosson

답변

2

복합 속성을 사용하는 경우 각 요소의 실제 색인을 지정해야합니다. 다시 게시 될 때 이러한 요소는 연속적이어야합니다 (또는 .Index 요소를 포함해야 함). 게시물의 속성을 수정하는 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; 
}); 
0

이런 문제가 있습니다.

컬렉션이있는 모델 클래스입니다. 요청에 키가 있지만 컬렉션이 null입니다. 긴 이야기하자면, 컨트롤러에 ICollection 매개 변수를 추가하여 mvc가 데이터를 바인딩하도록했습니다.

이 둘러보기를 참조하십시오. 아마도 도움이 될 것입니다 : http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx. 그것은 나를 위해 작동합니다. 하지만, 나는 초보자입니다.

관련 문제