2014-03-05 3 views
0

내 MVC 응용 프로그램의 입력에로드를 작성하여 MVC 모델 바인더에서 가져 와서 내 뷰 모델을 채 웁니다. 작동하지 않고 이유를 모르겠습니다.MVC 및 녹아웃 모델 바인딩

public class GraffitiViewModel 
{ 
    // view model 
    public List<Witness> Witnesses; 
} 

public class Witness 
{ 
    public string firstName { get; set;} 
    public string lastName { get; set; } 
    public string telephone { get; set; } 
    public string email { get; set; } 
    public string propertyNameNumber { get; set; } 
    public string street { get; set; } 
    public string postcode { get; set; } 
} 
:

여기
 <div data-bind="foreach: witnesses"> 
      <input data-bind="attr: { name: 'Witnesses[' + $index() + '].firstName', value: firstName}" /> 
      <input data-bind="attr: { name: 'Witnesses[' + $index() + '].lastName', value: lastName}" /> 
      <!-- more fields here --> 
     </div> 

는 C#에서보기 모델의 조각입니다 : 여기

내가 모델 바인더가 데리러의 입력을 만들 바라고있는 녹아웃의 조각입니다

입력이 Request.Form의 서버에 성공적으로 전달되지만보기 모델에 바인딩되지 않습니다. 누구나 왜 그런 생각이 있니? 나의 유일한 다른 옵션은 모델 바인딩이 일어나고있는 곳과 작동하지 않는 이유를 찾기 위해 MVC 소스 코드를 단계적으로 살펴 보는 것이다.

마크

+1

'증인'도 속성이어야합니다! 'public class GraffitiViewModel { // 모델보기 공개 목록 증인 {get; 세트; } }' – nemesv

+0

attr : {name : '증인 ['+ $ index() + '] .firstName''증인 '이 속성이되었으므로 다시 변경하려고 할 수 있습니까? – nemesv

+0

나는 그것을했지만 작동하지 않았다. – serlingpa

답변

-1

내가이 이름 속성을 설정하려고 생각 '증인 ['+ $ 지수() + '] .firstName. 우선 $ parent와 함께 사용할 수 있지만 대신에 propery 이름을 직접 사용할 수 있습니다. @nemesv에서 제안한 것처럼 먼저 증인에게 증언을하십시오. 당신의 도움에 대한

<div data-bind="foreach: witnesses"> 
    <input data-bind="attr: { name: $parent.witnesses()[$index()].firstName, value: firstName}" /> 
    <input data-bind="attr: { name: $parent.witnesses()[$index()].lastName, value: lastName}" /> 
<!-- more fields here --> 
</div> 

http://jsfiddle.net/J3Yze/

+1

위 코드와 같이 보이도록 코드를 수정했으며 Witnesses 필드를 속성으로 변경했습니다. 나는 여전히 포스트 백에 내 증인의 속성에 null이 있어요. 어떤 아이디어? 또한 $ parent 및 $ index에 대한 설명서는 어디에 있습니까? – serlingpa

+0

설명서를 찾았습니다! 녹아웃 사이트에는 검색이없는 동정 – serlingpa

0

안녕 그대의 nemesv 내보기 모델이 성공적으로 구속력 alklesh

, 감사합니다. 제안 된 구문이 작동하지 않아 다음과 같이 되돌 렸습니다.

<input data-bind="attr: { name: 'Witnesses[' + $index() + '].firstName', value: firstName}" /> 

이것은 꽤 좋지 않지만 작동하므로 행복합니다. 나는 그것을 재검토하고 그것을 더 깔끔하게하려고 노력할 수있다. 그러나 나는 계속 전진 할 정도로 지금 그것에 충분한 시간을 보냈다.

다시 도움 주셔서 감사합니다.

마크