safari浏览器ajax与服务器对象的数据映射

时间:2018-01-24 10:38:50

标签: c# jquery ajax asp.net-mvc safari

我有一个简单的课程:

public class Person 
{
    [JsonProperty("name")]
    public string Name { get; set; }
    [JsonProperty("age")]
    public int Age { get; set; }
}

和MVC控制器方法:

[HttpPut, Route("person/information/{Id}")]
public ActionResult UpdateInformation(int Id,Person person) 
{
   //some processing
}

我通过jquery-ajax调用控制器方法:

var personObj = {
    name: 'SpiderMan',
    age: 25
 };
 $.ajax({
     url: '/person/information/ + $('.form').attr('id'),
     data: JSON.stringify({ person: personObj }),                 
     contentType:'application/json',
     type: 'PUT',
     success: function (resp) {         
     },
     error: function (xhr) {         
     }
 });

这适用于Chrome和Firefox。我在控制器中同时获得了Id和Person对象。但是,在 Safari浏览器(iPhone和Mac)中,我只获得了Id,但收到的person对象中的属性为空(默认值),即人物对象未被映射。

如果我从url路由和参数中删除Id,如下所示:

[HttpPut, Route("person/information/")]
public ActionResult UpdateInformation(Person person) 
{
   //some processing
}

person对象与ajax请求中的数据正确映射。

第一个请求中没有映射对象的原因是什么以及如何解决这个问题?

更新:我附上了请求参数的屏幕截图  来自浏览器 Chrome

From Chrome 并请求 Safari

From Safari

0 个答案:

没有答案