我在我的视图中使用了这些复选框:
<input type="checkbox" value="1" name="reglist" id="prueba2" />
<input type="checkbox" value="2" name="reglist" id="prueba3" />
我正在使用实体框架,而我的viewModel表不包含这些复选框的值。
我需要在控制器中检查复选框,并保留先前在请求中检查的复选框,而不将chexbox绑定到类。
答案 0 :(得分: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的丰富绑定。
干杯。
答案 1 :(得分:0)
每次单击复选框时,您都可以向控制器发出AJAX调用。
Ajax Call
$(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
}