webapi 通过dynamic 接收可变参数

 public class JsonParamModel
    {
        /// <summary>
        /// json key
        /// </summary>
        public string JsonKey { get; set; }

        /// <summary>
        /// json object
        /// </summary>
        public dynamic JsonObj { get; set; }
    }
  [HttpPost]
        public Result WebapiDynamic(JsonParamModel json)
 $.ajax({
                type: "POST",
                contentType: "application/json",
                dataType: "json",
                url: $("#url").val(),
                data: JSON.stringify({"JsonKey": "13", "JsonObj": { "Key1": "11", "Key2": "-10" } }),
                success: function (results) {
                    if (typeof results == "object") {
                        JSON.stringify(results);
                    }
                    else {
                        var resultObj = JSON.parse(results);
                    }

                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert(XMLHttpRequest.responseText);
                }
            });

总结:在实体或者直接在参数中采用dynamic可以动态的接收参数

但是ajax在调用的时候稍微有一点不同

data: JSON.stringify({"JsonKey": "13", "JsonObj": { "Key1": "11", "Key2": "-10" } }),

contentType: "application/json",

时间: 2024-12-22 05:55:17

webapi 通过dynamic 接收可变参数的相关文章

stdarg.h——用于函数接受可变参数

stdarg.h是C语言中C标准函数库的头文件,stdarg是由standard(标准) arguments(参数)简化而来,主要目的为让函数能够接收可变参数. 1.可变参数函数 声明可变参数函数 可变参数函数的参数数量是可变动的,它使用省略号来忽略之后的参数.例如printf函数一般.代表性的声明为: int check(int a, double b, ...); 可变参数函数最少要有一个命名的参数,所以 char *wrong(...); 在C中是不被允许的(在C++中,这样的声明是合理的

Java方法的可变参数个数

什么是可变参数 可变参数,具体来说是, 1.传递参数的时候可以传递0个.1个.2个--n个. 2.也可以传递一个数组. 3.可变参数,必须是方法的最后一个参数. 示例 //业务逻辑类 /** * 根据 Workplandetailid获取任务对象 * * @param detailId * @return */ public Taskinfo findByWorkplandetailid(String detailId) throws Exception { StringBuffer strbu

[Java5新特性]可变参数

什么是可变参数 Java基础内容中,关于函数具有一种特性:重载,如果我们要完成多个数字想加的需求,可以按照以下代码完成: public class Demo { public int add(int a, int b) { return a + b; } public int add(int a, int b, int c) { return a + b + c; } public static void main(String[] args) { int sum1 = new Demo().a

函数的可变参数

一.可变参数介绍: 1.一个方法定义好了参数,在调用时必须传入与其一一对应的参数 2.但是在JDK1.5之后提供了新的功能,可以根据需要自动传入任意个数的参数 3.其实就是一个数组,但是接收的是数组的元素,自动将这些元素封装成数组,简化了调用者的书写(注意:可变参数类型必须定义在参数列表的结尾处) 4.可变参数语法: 返回值类型 方法名称(数据类型....参数名称){ } 二.代码实例 public class ParamterDemo { public static void main(Str

Java5新特性之静态导入、可变参数、增强for循环、自动拆装箱

JDK1.5已经发布很长时间,之所以还拿出来是因为它增加了很多个重要的特性,使用这些特性有助于我们简化开发,编写的代码更加简洁清晰安全,主要有以下几个特性: ?  静态导入 ?  可变参数 ?  增强for循环 ?  自动拆装箱 ? 泛型 ? 枚举 由于泛型.枚举内容比较多,也最重要,之后单拿出来讲.这里先介绍前面四个简单而又实用的小特性. 1. 静态导入 所谓"静态导入"只不过是在普通的import语句中加入关键字static,例如: ?  非静态导入:import java.lan

函数中的可变参数

可变指的是函数参数的个数可变,可以是1个.2个到任意个,还可以是0个. 我们以数学题为例子,给定一组数字a,b,c--,请计算a2 + b2 + c2 + --. 要定义出这个函数,我们必须确定输入的参数.由于参数个数不确定,我们首先想到可以把a,b,c--作为一个list或tuple传进来,这样,函数可以定义如下: def calc(numbers): sum = 0 for n in numbers: sum = sum + n * n return sum 但是调用的时候,需要先组装出一个

Printf可变参数使用

参考文档: http://bbs.csdn.net/topics/70288067 Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源 本文的二个重点: 1. 可变参数实际上通过首个参数的地址来获取其它参数的地址,因为是顺序存储传过来的 1.      可变参数为了处理方便,所有的浮点型都是按照double型压栈. 因此,像printf采用的可变参数,它直接使用%f显示double型,不需要管float型. 关注printf的精度,需要先关

方法的可变参数

当几个方法对相同类型的元素(个数不同)进行相同的操作时,首先有两种方式 1.定义不同个数变量的参数列表的重载函数,例如: public void show(int a){} public void show(int a, int b){} public void show(int a, int b, int c){} 2.定义一个参数为数组的函数,每次操作时创建不同的数组,例如: public void show(int[] a){} int[] a = {1,2}; show(a); int[

【Java学习笔记】函数的可变参数

1 package p2; 2 3 public class ParamterDemo { 4 5 public static void main(String[] args) { 6 7 int sum1 = add(4,5); 8 int sum2 = add(4,5,6); 9 int sum3 = add(4,5,6,7); 10 11 System.out.println(sum1); 12 System.out.println(sum2); 13 System.out.println