C# MVC 3 ajax post未获取选中值的复选框
我已经尝试了我所知道的一切,但仍然无法获得我的复选框列表检查值。我有一个嵌套的局部视图,它呈现一些客户机信息数据,并允许他执行一些插入操作。没什么复杂的。但是,有一个为某些类型的客户生成的动态合同列表。这是我的复选框列表,动态列表。 虽然我可以获取整个表单的值,但我无法从复选框中获取任何复选值 这是我的代码: 视图模型C# MVC 3 ajax post未获取选中值的复选框,c#,ajax,json,asp.net-mvc-3,checkboxlist,C#,Ajax,Json,Asp.net Mvc 3,Checkboxlist,我已经尝试了我所知道的一切,但仍然无法获得我的复选框列表检查值。我有一个嵌套的局部视图,它呈现一些客户机信息数据,并允许他执行一些插入操作。没什么复杂的。但是,有一个为某些类型的客户生成的动态合同列表。这是我的复选框列表,动态列表。 虽然我可以获取整个表单的值,但我无法从复选框中获取任何复选值 这是我的代码: 视图模型 public List<TITAContratos> Contratos { get; set; } public class TITAContratos
public List<TITAContratos> Contratos { get; set; }
public class TITAContratos
{
public string NumContrato { get; set; }
public bool Checked { get; set; }
}
编辑
只是想指出问题:我无法获得任何复选框选中值。即使我可以获得复选框的隐藏值,我也无法获得选中的复选框。这是因为
CheckBoxFor
helper为每个复选框生成了额外的隐藏字段
使用方法而不是JSON发送普通application/x-www-form-urlencoded
encoded请求如何:
$("#btnCadAcordo").click(function () {
var urlSave = '@Url.Action("DebPropostas")';
$.ajax({
type: 'POST',
url: urlSave,
data: $('#debPropForm').serialize(),
success: function (returndata) {
$('#containerDebProp').html(returndata);
}
});
return true;
});
这样,您就不再需要
serializeObject
函数。另外,debPropForm
在您显示的代码中找不到,请确保此表单包装了编辑器模板及其输入字段。这里要确定的是-您的问题在控制器中,或者在复选框中获取值?@Adam,问题在我的控制器中。无论我做什么,我的复选框总是错误的,即使是我选中的那些。我需要知道勾选了哪些复选框。哇,这太棒了!我想知道你是怎么知道这些事情的,仅仅是看一段代码。必须是多年的经验。为什么serializeObject方法会丢失自动生成的复选框检查值?@Adriano RR,这是多年的经验:-)
@model MVCGestaoWeb.Models.ViewModels.TITAContratos
<p>
@Html.HiddenFor(x => x.NumContrato)
@Html.CheckBoxFor(x => x.Checked )
@Html.LabelFor(x => x.Checked , Model.NumContrato)
<br />
</p>
$("#btnCadAcordo").click(function () {
var urlSave = '@Url.Action("DebPropostas")';
var taVM = $("#debPropForm").serializeObject();
$.ajax({
type: "POST",
url: urlSave,
//Com isso ele permite a passagem de objetos para o Controller
data: JSON.stringify(taVM),
datatype: "JSON",
contentType: "application/json; charset=utf-8",
success: function (returndata) {
$("#containerDebProp").html(returndata);
}
});
return true;
});
$.fn.serializeObject = function () {
var o = {};
var a = this.serializeArray();
$.each(a, function () {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
$("#btnCadAcordo").click(function () {
var urlSave = '@Url.Action("DebPropostas")';
$.ajax({
type: 'POST',
url: urlSave,
data: $('#debPropForm').serialize(),
success: function (returndata) {
$('#containerDebProp').html(returndata);
}
});
return true;
});