用剃刀asp.net mvc的时候得到正确的复选框值 [英] Get correct checkbox value when using razor asp.net mvc
问题描述
我使用的剃刀渲染自己的状态。我遍历类 .control_group
这是一个表单中,并创建一个我需要发回控制器对象。我的表单有复选框和隐藏的输入值。问题我现在面临的就是这个。通过剃刀呈现复选框元件具有两个输入,一个是隐藏的,另一种被示出。当我收集表单数据,我总是得到一个输入值(隐藏之一,它总是假
)我怎样才能得到真正的价值呢?
发送到控制器的当前数据(一切都是假的):
<$p$p><$c$c>{"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)。图(函数(一,组){
VAR数据= {};
$(集团).find(':输入')。每个(函数(){
数据[this.name = THIS.VALUE;
});
返回的数据;
})。得到();
ajaxData = JSON.stringify({'ajaxData':ajaxData});
执行console.log(ajaxData);
控制器看起来是这样的:
公共无效送出数据(表&LT; SomeClass的&GT; ajaxData)
{
VAR数据= ajaxData;
}
公共类SomeClass的
{
公众诠释编号{获得;组; }
公众诠释RoleId {获得;组; }
公共BOOL R {获得;组; }
公共BOOL W {获得;组; }
公共BOOL,E {获得;组; }
公共BOOLð{获得;组; }
}
剃刀语法通常会创建一个隐藏字段用于单选按钮和放大器;复选框。输入选择以:您可以将
更改输入:复选框
做你的任务
VAR ajaxData = $('。control_group)。图(函数(一,组){
VAR数据= {};
$(集团).find(':输入:复选框)每个(函数(){
数据[this.name = THIS.VALUE;
});
返回的数据;
})。得到();
ajaxData = JSON.stringify({'ajaxData':ajaxData});
执行console.log(ajaxData);
I am rendering my form using razor. I iterate over class .control_group
that's inside a form and create objects that I need to send back to controller. My form has checkboxes and hidden input values. Problem I am facing now is this. Checkbox elements rendered by razor have two inputs, one is hidden and other one is shown. When I collect form data I am always getting last input value (hidden one, and it's always false
) How can I get the true value?
Current data sent to controller (everything is 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"}]}
Collecting data like this (found similar problem here on 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);
Controller looks like this:
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; }
}
Razor syntax always creates a hidden field for radio button & checkbox. You can change your :input
selector to :input:checkbox
to do your task.
var ajaxData = $('.control_group').map(function (i, group) {
var data = {};
$(group).find(':input:checkbox').each(function () {
data[this.name] = this.value;
});
return data;
}).get();
ajaxData = JSON.stringify({ 'ajaxData': ajaxData });
console.log(ajaxData);
这篇关于用剃刀asp.net mvc的时候得到正确的复选框值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!