2014-04-18 5 views
0

MVC에서 Knockout을 시작 하려는데 일반 바인딩/매핑 작업을 수행 할 수있게되었습니다. html.action을 사용하여 View에서 Model로 모델 ID를 전달하고 싶습니다. null 값을 전달합니다. knockout 바인딩을 사용하고 있습니다. ... 오류를 찾는 도와주세요뷰에서 컨트롤러로 녹아웃 바인딩 매개 변수 전달

내보기 :

// Foreach loop started 

<tbody data-bind="foreach: list"> 
     <tr> 
      <td data-bind="text: DisplayFlatNumber, click: $parent.rowClick"></td> 
      <td data-bind="text: DisplayFullName, click: $parent.rowClick"></td> 
      <td data-bind="text: Flat.MaintainanceCharge, click: $parent.rowClick">0</td> 
      <td data-bind="text: @Html.Action("DueAmount", "MemberDirectory", 
new { id = Model.Id })"></td> 
     </tr> 
</tbody> 'Model.Id is not throwing any data to controller' 
    //loop end 

답변

2

당신은 그렇게 함께 MVC와 녹아웃을 사용할 수 없습니다 - 그것은 당신이 그들을있어처럼 모두 같은 반복 보인다 맡은 일. MVC를 사용하여 데이터를 렌더링하거나 녹아웃을 사용하여 렌더링 할 수 있습니다. 녹아웃을 사용하려면 가장 쉬운 방법은 MVC에서 JSON으로 데이터를 렌더링하고이를 모델의 기초로 사용하는 것입니다.

<script type="text/javascript"> 
    var model = @Html.Raw(JsonConvert.SerializeObject(Model)); 

    function ViewModel(data) { 
     var self = this; 
     self.Rows = data;// You could use ko.mapping here if you want observables 
    } 

    var vm = new ViewModel(model); 
    ko.applyBindings(vm); 
</script> 

이렇게하면 테이블에 MVC HTML을 사용하지 않아도됩니다. 즉, Html.ActionLink을 사용할 수 없으므로 직접 링크를 만들어야합니다.

+0

MVC를 Knocout과 함께 사용하지 않으면 프로그램의 다른 부분이 애스펙트 될 것입니다. 따라서 Model.Id 대신 전달해야 할 내용을 알려주십시오. – user3500913

+0

MVC와 녹아웃을 결합 할 수 없습니다. 다시 시도하십시오 - 불가능합니다. MVC에서 렌더링 한 HTML을 보면 왜 각 행에 대해 tbody 섹션을 렌더링하는지 알 수 있습니다. – Richard

관련 문제