2011-01-21 4 views
0

내가 뭘하고 있는지. 나는 그 행의 "선택"을위한 각 행 끝에 버튼이있는 기본 테이블을 추가 작업에 사용합니다. 내 액션 방법은 두 가지 간단한 내가 ID1을 전화 할게 매개 변수 등 ID2 있습니다DefaultModelBinder 및 테이블 행의 값에서 바인딩 작업 매개 변수

공공 ActionResult 해봐요 (INT ID1, INT ID2)

ID1은의 범위에 숨겨진 양식 필드에서 바인딩됩니다 테이블,이 잘 작동합니다.

id2는 추가 처리가 필요한 행을 나타내는 버튼에 따라 테이블의 개별 행에서 숨겨진 열에서 가져와야합니다. 이해가 되니?

양식이 동작 방법으로 다시 게시되면 id1은 아무런 문제없이 완벽하게 설정되지만 id2는 항상 행 1의 숨겨진 열의 값입니다. DefaultModelBinder가 숨겨진 열 값을 버튼이 클릭 된 행?

적극적으로 도움을 주셔서 감사합니다.

<td style="display:none;">@Html.Hidden("id2", viewModel.id2)</td> 

답변

0

당신은 간단한 하이퍼을 사용할 수 있습니다 여기에


나는 그것이 버튼을 클릭 한에서 행의 게시물에 값의 캡처 할 행 당 렌더링되는 숨겨진 테이블 열입니다 각 행의 양식 대신 링크. 이처럼 :

/somecontroller/DoSomething?id1=123&id2=456 

당신이 그것을 클릭 할 때 DoSomething 조치가 올바른 매개 변수와 함께 호출됩니다 : 기본 경로를 가정하면 다음 링크를 생성해야

@Html.ActionLink("link text", "DoSomething", "SomeController", new { 
    id1 = viewModel.id1, id2 = viewModel.id2 
}, null) 

.


당신이 POST로 여러 형태의 각 행에 대해 하나가 필요합니다이 작업을 수행하려면 :

@using (Html.BeginForm("DoSomething", "somecontroller")) 
{ 
    @Html.Hidden("id1", viewModel.id1) 
    @Html.Hidden("id2", viewModel.id2) 
    <input type="submit" value="OK" /> 
} 
+0

와우 친구, 프릭! 왜 그렇게 생각하지 않았습니까? lol 여러 가지 양식을 사용하고 있지는 않지만,이 솔루션은 완전히 저에게 딱 들어 맞습니다. 고마워! – slimflem

+0

음, 그게 정확히 내가 겪은 것이 아니야. POST를하고 다른 페이지로 다시 리디렉션해야합니다. 실제로 HTML 인라인 렌더링하거나 현재 페이지에 머물 필요가 없습니다. 나는 이것을 위해 자바 스크립트를 선호하지 않는다. – slimflem

+0

@slimflem, 그러면 여러 양식이 필요합니다. 내 업데이트를 참조하십시오. –

관련 문제