【发布时间】:2015-11-24 15:00:48
【问题描述】:
我正在使用 razor 渲染我的表单。我遍历表单内的类.control_group 并创建需要发送回控制器的对象。我的表单有复选框和隐藏的输入值。我现在面临的问题是这个。 razor 渲染的复选框元素有两个输入,一个是隐藏的,另一个是显示的。当我收集表单数据时,我总是得到最后一个输入值(隐藏一个,它总是false)我怎样才能得到真正的值?
当前发送给控制器的数据(一切都是假的):
{"ajaxData":[{"Id":"1","RoleId":"1","R":"false","W":"false","E":"false","D":"false"},{"Id":"2","RoleId":"2","R":"false","W":"false","E":"false","D":"false"}]}
像这样收集数据(在 SO 上发现了类似的问题):
var ajaxData = $('.control_group').map(function (i, group) {
var data = {};
$(group).find(':input').each(function () {
data[this.name] = this.value;
});
return data;
}).get();
ajaxData = JSON.stringify({ 'ajaxData': ajaxData });
console.log(ajaxData);
控制器如下所示:
public void SendData(List<SomeClass> ajaxData)
{
var data = ajaxData;
}
public class SomeClass
{
public int Id { get; set; }
public int RoleId { get; set; }
public bool R { get; set; }
public bool W { get; set; }
public bool E { get; set; }
public bool D { get; set; }
}
【问题讨论】:
-
什么时候调用描述为“收集数据”的代码?
-
你有什么理由不只是序列化表单吗? -
$.post(url, $('form').serialize(), .... -
虽然我刚刚注意到你的观点是错误的(无效的 html)如果这是一个集合。您需要使用
for循环或EditorTemplate生成表单控件
标签: javascript jquery json ajax asp.net-mvc