我在我的视图中使用这些复选框:
<input type="checkbox" value="1" name="reglist" id="prueba2" />
<input type="checkbox" value="2" name="reglist" id="prueba3" />
我正在使用实体框架,而我的 viewModel 表不包含这些复选框的值。
我需要在控制器中选中复选框,并保留先前在请求中选中的复选框,而不将复选框绑定到类。
我在我的视图中使用这些复选框:
<input type="checkbox" value="1" name="reglist" id="prueba2" />
<input type="checkbox" value="2" name="reglist" id="prueba3" />
我正在使用实体框架,而我的 viewModel 表不包含这些复选框的值。
我需要在控制器中选中复选框,并保留先前在请求中选中的复选框,而不将复选框绑定到类。
为了我们使用相同的语言,我通常将我保存在数据库中的东西称为“模型”,将我用作视图上的模型的东西称为“视图模型”。
在那,我会有一个这样的模型:
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 的丰富绑定。
干杯。
每次单击复选框时,您都可以对控制器进行 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
}