用剃刀asp.net mvc的时候得到正确的复选框值 [英] Get correct checkbox value when using razor asp.net mvc

查看:140
本文介绍了用剃刀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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆