2013-04-11 3 views
1

나는 누군가가 볼 시간이 있기를 바라고있다. 내 mvc 3 테스트 프로젝트에서 테이블로 볼 수 있습니다. 표 안에 체크 박스가 있습니다. 그 체크 박스를 클릭 할 때마다 저장되도록 노력하고 있습니다. 나는 자바 스크립트로 시도했지만, 인터넷에서 예제를 많이 사용했지만 여전히 운이 좋지 않았다. 누군가 도울 수 있습니까?MVC 3 db에 체크 박스 상태 저장

@foreach (var item in Model) 
{ 
    <tr> 

     <td> 
      @Html.DisplayFor(modelItem => item.date) 
     </td> 

     <td> 
      @Html.DisplayFor(modelItem => item.Name) 
     </td> 

     <td> 
      @Html.DisplayFor(modelItem => item.section) 
     </td> 
     <td> 

    @Html.CheckBoxFor(modelItem => item.check, new { onclick = "SomeMethod(this)" }); 

</td> 
     <td> 
      @Html.ActionLink("Edit", "Edit", new { id = item.idImovine }) 

      </td> 
    </tr> 
} 

</table> 


<script type="text/javascript"> 

    function SomeMethod(checkboxInput) { 

     $.ajax({ 
      type: 'POST', 
      url: 'Home/Action', 
      data: { newValue: checkboxInput.checked }, 
      success: success, 
      dataType: 'json' 
     }); 
    } 

</script> 

이 내 컨트롤러

내가 DB에 대한 접근은 SQL에 LINQ를 사용하고
public JsonResult Action(bool newValue) 
     { 

      var model = con.pro.Single(r => r.id == id); 


      TryUpdateModel(model); 
      con.SubmitChanges(); 

      return Json(true) 


     } 

입니다 : :)

이 내이다. 누군가가 내가 뭘 잘못하고 있는지, 내 의도는 클릭하면 언제든지 체크 박스가 dv에 저장되도록하는 것입니다. 그러나 그 체크 박스는 뷰에서 오는 테이블에서 클릭되고 다른 tabe에 저장되어야합니다. 추측 하건데 나는 체크 박스 값과 함께 내부보기 인 ID를 전달해야합니다. 당신이 POST를 사용하는 경우

+0

당신이로 클릭 양식 또는 단지에서 버튼을 제출할 때 사용자가 데이터를 저장할 수 체크 박스를 선택하면? – Kiwanax

+0

Shyju의 답변이 트릭을 만들었습니다. 이제 모든 것이 의도 한대로 작동합니다. 타이 대답에 대한 모든, 여기에 좋은 ppl : D 조. 내가 MVC 3을 배우면 더 잘 다른 pll에게 도움을 줄 것입니다. – gocman

답변

2

를 표시해야합니다. 이렇게 면도기 코드를 업데이트 해 봅시다.

@foreach (var item in Model) 
{ 
    <tr> 
    <td> 
     @Html.CheckBoxFor(modelItem => item.check, 
               new { @id=item.ID, @class="chks"}); 
    </td> 
    </tr> 
} 

이제 우리는 이제 Update 방법은이 매개 변수

당신이 필요로하는
[HttpPost] 
public ActionResult Update(int id,bool newValue) 
{ 
    //do your saving here. 
    return Json(true); 
} 
+0

고맙습니다. 모든 것이 잘 작동하고 체크 박스는 다음과 같이 저장됩니다. – gocman

+1

@ user2020224 여러분 환영합니다. 기꺼이 도와 드릴 수 있습니다. :) – Shyju

1

, 당신의 행동은 당신이 체크 박스로 표시되는 레코드의 ID를 전달해야 할 수 있습니다 따라

[HttpPost] 
public JsonResult Action(bool newValue) 
+1

예, 깜빡 했네요, 타이 : – gocman

1

을 허용되어 있는지 확인 확인란

<script type="text/javascript"> 
    $(function(){ 

     $(document).on("click","input.chks", function (e) { 
      var _this=$(this); 
      var isChecked = _this.is(':checked'); 
      $.post("@Url.Action("Update","Home")?id="+_this.attr("id")+ 
              "&newValue="+isChecked,function(data){ 
       // do something with the response 
      }); 

     }); 
    }); 

</script> 

의 클릭 이벤트를 수신 일부 unobutrusive 자바 스크립트를해야합니다 모델에 Id을 입력 한 다음보기에서 수행하세요.

function SomeMethod(checkboxInput) { 
    $.ajax({ 
     type: 'POST', 
     url: 'Home/Action', 
     data: { newValue: $(checkboxInput).is(':checked'), id: $(checkboxInput).attr('dataid') }, 
     success: success, 
     dataType: 'json' 
    }); 
} 

을 그리고이 같은 컨트롤러에 그것을 받아 들일 :

@Html.CheckBoxFor(modelItem => item.check, 
    new { @dataid = item.Id, onclick = "SomeMethod(this)" }); 

은 다음과 같이 귀하의 아약스 게시물을 할

public JsonResult Action(bool newValue, int id) 
{ 
    // do your saving here 
} 
+0

나는 그것을 얻었고, 수녀님은 내가 필요한 것을 대답했다. 나는 나의 해결책에 가까웠다. 그러나 나는 틀린 무엇이 그림을 couldnt한다 : D 지금 나는 알고있다. 미스터 폰 v에 감사드립니다 :) – gocman