使用AJAX和C#将Json数据映射到对象

时间:2017-09-13 23:33:21

标签: c# jquery .net json ajax

如何使用C#中的AJAX请求发送的Json格式数据?

这是使用JQuery和AJAX的视图

<script type="text/javascript">
    $(function () {
        $("#btnGet").click(function () {
            var values =
                {  
                    "Name": "Manuel Andrade",
                    "DateOfBirth": "12/01/1995"
                }
            $.ajax({
                type: "POST",
                url: "/api/WebApi/GetAge",
                data: values,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (response) {
                    alert("Hello: " + response.Name + ".\nCurrent Date and Time: " + response.DateTime);
                },
                failure: function (response) {
                    alert(response.responseText);
                },
                error: function (response) {
                    alert(response.responseText);
                }
            });
        });
    });
</script>

这是控制器:

 public class PersonController : ApiController
{
    [System.Web.Http.Route("api/WebApi/GetAge")]
    [System.Web.Http.HttpPost]
    public Person GetAge(Person person)
    {
        //person = new Person();
        //person.Name = "Luis";

        JsonTest(person);


        //int ageInMonths = calculateAgeInMonths(person);
        //int ageInYears = calculateAgeInYears(person);

        //System.Diagnostics.Debug.WriteLine(ageInMonths);
        //System.Diagnostics.Debug.WriteLine(ageInYears);

        return person;
       }
    }

Person Model与视图中的Json变量具有完全相同的属性。它不应该自动创建一个对象吗?方法JsonTest()正常工作,它用于序列化数据。如果我取消对人员实例化和分配给Luis的注释,该方法会将带有该数据的Json返回给视图。但是,如果我尝试使用person参数就像它抛出一个null异常。如何将View中的var值传递给GetAge方法,以便将其分配给对象?

1 个答案:

答案 0 :(得分:0)

当我删除contentType: "application/json; charset=utf-8",行时,它对我来说很好。

默认情况下,它不会以application / json的形式返回。