1

私は誰かが見る時間を持っていることを望んでいる 1 つの問題があります。mvc 3 テスト プロジェクトでテーブルとして表示しています。テーブル内にチェックボックスがあります。私はそれらをクリックするたびにそのチェックボックスを保存しようとしています。私はJavaスクリプトを試し、インターネットからの多くの例を試しましたが、それでもうまくいきません. 誰か助けてくれませんか?:)

これは私の見解です:

@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>

これは私のコントローラーです

   public JsonResult Action(bool newValue)
        {

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


            TryUpdateModel(model);
            con.SubmitChanges();

            return Json(true)


        }

私はdbへのアクセスにlinq to sqlを使用しています。誰かが私が間違っていることを教えてもらえますか?私の意図は、クリックされるたびにチェックボックスをdvに保存することですが、そのチェックボックスはビューから来ているテーブルでクリックされており、別のタブに保存する必要があるので、私はチェックボックスの値とともに、ビュー内にあるIDも渡す必要があると推測しています。

4

3 に答える 3

2

チェックボックスで表されるレコードの ID を渡す必要がある場合があります。それでは、かみそりのコードを次のように更新しましょう。

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

これで、チェック ボックスのクリック イベントをリッスンする控えめな JavaScript がいくつかできました。

<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>

Updateメソッドが 2 つのパラメーターを受け入れていることを確認します。

[HttpPost]
public ActionResult Update(int id,bool newValue)
{
   //do your saving here.
  return Json(true); 
}
于 2013-04-11T18:18:07.947 に答える
1

POST を使用している場合は、それに応じてアクションをマークする必要があります

[HttpPost]
 public JsonResult Action(bool newValue)
于 2013-04-11T18:08:15.123 に答える
1

Idモデルにが必要で、ビューでこれを行う必要があります。

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

次に、次のように ajax 投稿を行います。

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

そして、次のようにコントローラーで受け入れます。

public JsonResult Action(bool newValue, int id)
{
    // do your saving here
}
于 2013-04-11T18:21:08.847 に答える