0

ビューでこれらのチェックボックスを使用しています。

<input type="checkbox" value="1" name="reglist" id="prueba2" />
<input type="checkbox" value="2" name="reglist" id="prueba3" />

エンティティ フレームワークを使用していますが、viewModel テーブルにそれらのチェックボックスの値が含まれていません。

コントローラーでチェックボックスをチェックし、チェックボックスをクラスにバインドせずに、リクエストに沿って以前にチェックされたものを保持する必要があります。

4

2 に答える 2

1

同じ言語を話しているように、私は通常、データベースに保存するものを「モデル」と呼び、ビューでモデルとして使用するものを「ビュー モデル」と呼びます。

その中で、私はそのようなモデルを持っています:

public class Person{
   // properties
}

そして、私は次のようなビューモデルを持っています:

public class PersonViewModel{
   public Person Person { get; set; }
   public bool OtherNeededValue1 {get; set;}
   public bool OtherNeededValue2 {get; set;}
}

ビューで、モデルとして PersonViewModel を使用します。次に、コントローラーでは、アクションは次のようになります。

public ActionResult Create (PersonViewModel viewModel)
{
     if (viewModel.OtherNeededValue1)
     {
         // do something
     }

     var p = new Person { 
                          FirstName = viewModel.Person.FirstName 
                        };

}

このようにして、不要なプロパティでモデルをクラウド化することはありませんが、MVC の豊富なバインディングを引き続き利用できます。

乾杯。

于 2012-09-09T22:23:47.443 に答える
0

チェックボックスがクリックされるたびに、コントローラーに AJAX 呼び出しを行うことができます。

Ajax 呼び出し

    $(function () {
        $(':checkbox').change(function () {
            $.ajax({
                url: '@Url.Action("CheckBoxStatus")',
                type: 'POST',
                data: { isChecked: $(this).is(':checked'),
                        id: $(this).val()
                },
                success: function (result) { }
            });
        });
    });

これにより、ステータスとチェックボックスの値がコントローラーに送信され、どのような方法でも情報を保存できます。

コントローラーの方法

public void CheckBoxStatus(bool isChecked, int id)
{
   // Do what you like here 
}
于 2012-09-09T23:53:19.223 に答える