2012-06-20 4 views
0

전달되는 모델의 속성 중 하나가 개체 목록 인 강력한 형식의보기가 있습니다. 나는 잘 작동 BeginCollectionItem 도우미를 사용하여 입력 목록의 동적 바인딩을 처리하고 있습니다. 그러나 처음에는 목록에있는 '첫 번째'개체에 바인딩 할보기에 입력 그룹을 표시하려고합니다.동적 개체 목록을 모델에 바인딩하는 방법

저는 BeginCollectionItem이 생성하는 입력을 복사하려고했지만 작동하지 않는 것 같습니다. 이름

invoiceItems[ef43a8f2-c6b7-4791-bf7f-6764c8e3fc9b].Description 
invoiceItems[ef43a8f2-c6b7-4791-bf7f-6764c8e3fc9b].Cost 

그래서 난 수동으로 이름이보기에이 개 입력을 넣어 같은 속성으로

그것은 입력을 생성은

invoiceItems[firstOne].Description 
invoiceItems[firstOne].Cost 

속성하지만의 모델에 표시되지 않았다 컨트롤러에서 양식을 제출하십시오.

처음 항목을 다르게 표시해야하기 때문에 뷰를로드 할 때 BeginCollectionItem 방식을 삽입 할 수 없습니다.

+0

동적 입력을 강하게 유형의 모델보기로 번역하십시오. 그것은 당신의 문제를 해결할 것입니다. 이 데이터를 안전하게 구문 분석하는 방법을 살펴볼 수도 있습니다. http://msdn.microsoft.com/en-us/library/ms366789.aspx –

답변

1

질문에과 정확히 일치하지 않지만, 문제을 해결할 수 있기를 바랍니다.

보기에서 이름을 변경하는 대신 모델을 변경해보십시오. boolean 속성 IsFirst을 추가하십시오. 나는 당신이 controller (또는 어디에서 모델이 인스턴스화되는지)에서 어느 것이 먼저인지를 안다. 첫 번째 항목 IsFirst을 true로 설정하십시오.

0

나는 그것을 알아 냈다. 저는 BeginCollectionItem이 수동으로 처리 한 것들을 수동으로 넣는 것으로 바른 길을 가고있었습니다. 바인딩을 알려주는 다른 숨겨진 인풋이 필요하다.

그래서 다음 작품은 완벽하게

<input type="hidden" name="invoiceItems.index" autocomplete="off" value="firstOne" /> 
<input type="text" placeholder = "ex. Labour" id="invoiceItems_firstOne__Description" name="invoiceItems[firstOne].Description" /> 
<input type="text" placeholder = "ex. $15" id="invoiceItems_firstOne__Cost" name="invoiceItems[firstOne].Cost" /> 

난 그냥 내가 전에 가지고 무엇을 상단 숨겨진 입력을 추가하고 모두 좋다.

관련 문제