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 调用。

阿贾克斯调用

    $(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 回答