2012-12-10 2 views
1

개체 목록이있는보기 모델이 있습니다.WebGrid 확인란 MVC 면도날

목록을 WebGrid에 바인딩하면 모든 데이터가 올바르게 표시됩니다.

개체에는 WebGrid의 각 레코드와 함께 표시되는 확인란을 선택하여 변경할 수있는 부울 값이 있습니다. 사용자가 여러 확인란을 선택/선택 취소하고 업데이트 버튼을 클릭하면 변경 사항을 객체에 저장할 수 있기를 원합니다.

업데이트는 MVC와 면도기를 사용하여 "고통을 A ..."로 증명합니다.

어떻게 이러한 변경 사항을 다시 컨트롤러로 보낼 수 있습니까? 누군가 조언 할 수 있습니까? 샘플이 있습니까?

업데이트 : 각 체크 박스에 이름과 ID를 제공 한 후 컨트롤러로 다시 전체 양식을 통과 할 수 있었다

. 값은 item.Id로 설정되며 확인란을 실제로 선택한 경우에만 양식의 속성에서 찾을 수 있습니다.

그래서 컨트롤러에, 나는이 작업을 수행 :

public ActionResult Assign(FormCollection form) 
{ 
    var ch = form.GetValues("itemChk"); 
    foreach (var id in ch) 
    { 
     //...Get object using id 
     //...Call your method 
    } 
    return View(); 
} 

채널이 확인 된 만 체크 박스의 item.Ids의 문자열 배열입니다. 항목을 반환함으로써 체크 된 체크 상자의 값으로 항목 자체에 해당 값을 할당/설정하고 저장/업데이트 할 수 있습니다.

다음으로 시도하여 모든 체크 박스가 값과 함께 반환됩니다. 또한 텍스트 상자에서 WebGrid의 각 행을 찾아 리턴 값을 처리하기 위해 비슷한 것을 시도하십시오.

나는이 트랙을 내려가는 the link입니다.

+0

왜 모든 체크 박스를 값과 함께 반환 하시겠습니까? 어떤 값을 지정 하시겠습니까? 또한 텍스트 상자를 추가하는 것을 멈추고있는 것입니까? 체크 박스를 추가 한 것과 같은 방식으로 수행 할 수 있습니다. –

+0

질문에 대답 해주십시오. _meaningful_ title. 대신 _tags_를 나열하지 마십시오. – abatishchev

답변

1

당신은 컨트롤러

$('#btnClick').click(function (event) { 
    var form = $("#fmSearch").serializeArray(); 
    $.ajax({ 
     url: '/Home/Assign', 
     dataType: "json", 
     type: "post", 
     data: form, 
     cache: false, 
     success: function (data) { 
     }, 
     error: OnError 
    }); 
}); 

에 FormCollection를 전달하는 JSON 아약스 호출을 사용할 수 있습니다 : "contentType이"추가하지 않는 응용 프로그램/JSON을; .

@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "fmSearch" })) 
{ 
    @Html.ValidationSummary(true) 
} 

마지막으로, 액션 위 [HttpPost]를 추가하고 ActionResult를 대체 : 없음 상관 JSON 내용

fmSearch이 Html.BeginForm()의 ID가 없기 때문에 같은 캐릭터 세트는 = UTF-8 ", 당신이 그들을 쓸 수 있습니다