字符串传参   public Results testfunction1(string id)
{}对象传参   public Results testfunction2(person student)
{}
通常情况下 我是用     contentType = "application/json; charset=utf-8";  方式传递  json 字符串 但是有时候可以用json 对象也可以, 有时候不行
用字符串的时候也是 , 有时候可以 有时候不行被搞迷糊了 , 到底 什么情况对应   json 对象,  什么情况对应字符串,  什么时候对应 json字符串

解决方案 »

  1.   

    这个与路由规则有关系
    string id这个,应该是querystring  http://xx.api/?id=111 能收到111
    Person p这种,上传表单形式(默认的)能收到 
      

  2.   


    都是用post 方式,  有时候能路由到 ,有时候不行 ,  应该是和ajax的写法有关 , 但是老是搞不清楚对应关系
      

  3.   

    没有路由到,那应该是对象和传递的Json不匹配
      

  4.   

    不是json 不匹配,  貌似是有时候会自动转 json字符串到json对象, 有时候不会,  还没有摸清倒是是什么情况会把字符串转成对象
      

  5.   

    不是json 不匹配,  貌似是有时候会自动转 json字符串到json对象, 有时候不会,  还没有摸清倒是是什么情况会把字符串转成对象
    同样的json字符串,正常来说,试多少次都是一样的,要么都成功,要么都失败。
    所以只有不同json的时候,可能导致json转换对象时不匹配。
      

  6.   

    不会一会儿行,一会儿不行,那是你自己调试时,某些东西变了而不自知导致的。如果你传的是:
    {
                personCode: "1",
                personName: "xxx",
     }那么,应该根据这个方法参数转化:
    person student  (假设peson类里有如下两个字段)而你如果用这个参数转化,是收不到数据的,因为json里没有定义这个参数名:id如果,你json上传前,先包装了:
    var jsonStr = JSON.stringify({
                personCode: "1",
                personName: "xxx",
    });
    然后用id参数传递:
    htttp://www.xxx.com/xxx?id=jsonStr
    那么后台使用参数id的方法可以收到json字符串,你需要在后台把字符串自己解析回json对象再来使用。
      

  7.   

    搞清楚两个事情:
    1、传json和传json字符串是两回事
    2、mvc本身实现了一些功能,能将json对象自动因为到方法参数上去,生成反序列化为对象。其本质相当于手工调用了一下数据映射:
    TryUpdateModel(student); 你可以了解一下TryUpdateModel
      

  8.   

    不好意思我没有表达清楚 , 我现在调用webapi控制器方法的时候, 有的插件ajax在提交前会把json对象转换成字符串, 有的没有, 但是我在写webapi的方法时候, 没有搞清楚怎么设置接收参数,   导致有的方法只能接收json字符串,   有的方法只能接收json对象
      

  9.   

    webapi不需要你做什么特殊处理,你定义实体,然后以application/json传进来的body字符串能对应实体就可以了
    如果你只定义string参数的话,除非你显示指明[frombody],否则默认string是从querystring部分读取的
      

  10.   

    不好意思我没有表达清楚 , 我现在调用webapi控制器方法的时候, 有的插件ajax在提交前会把json对象转换成字符串, 有的没有, 但是我在写webapi的方法时候, 没有搞清楚怎么设置接收参数,   导致有的方法只能接收json字符串,   有的方法只能接收json对象
    你还是没有描述清楚你想干嘛?你是说你有多种插件,提交时有时有json对象有时用json字符串这个现实不可避免,然后在webapi里如何兼容处理这种情况??是否??
      

  11.   

    不好意思我没有表达清楚 , 我现在调用webapi控制器方法的时候, 有的插件ajax在提交前会把json对象转换成字符串, 有的没有, 但是我在写webapi的方法时候, 没有搞清楚怎么设置接收参数,   导致有的方法只能接收json字符串,   有的方法只能接收json对象
    你还是没有描述清楚你想干嘛?你是说你有多种插件,提交时有时有json对象有时用json字符串这个现实不可避免,然后在webapi里如何兼容处理这种情况??是否??
    对 主要就是想做兼容处理,另外想确认下, 什么情况下,mvc把json字符串或者json对象 转换成 c# 的实体对象的映射规则