【问题标题】:Model Binder not working with JSON模型绑定器不适用于 JSON
【发布时间】:2014-01-29 08:34:34
【问题描述】:

您好,我正在尝试做一个 WebAPI + Windows Phone APP 进行交互。项目是 Web API MVC4 .NET 4.5 我有以下问题: 模型绑定不起作用或最终无法填充内部字段。

如果您尝试从寄存器中查看变量“toRegister”,它始终为空且所有内容均为空。它应该填充正确吗?。

注意:用户对象在这两种情况下都是同一个类。

服务器代码。

public SessionAPI register(User toRegister)
{  //SomeCodeHere }

客户代码。 (Windows 电话 8)

User toPost = new User();
toPost.Name = "test";
toPost.Email = "email@email.com";
toPost.PhoneNumber = "13243";
toPost.Password = "secret";

WebClient webClient = new WebClient();
webClient.Headers["Accept"] = "application/json";
webClient.Headers["Content-Type"] = "application/json";
webClient.UploadStringAsync(new Uri(Destination), "POST" ,JsonConvert.SerializeObject(toPost));
webClient.UploadStringCompleted += new UploadStringCompletedEventHandler(webClient_UploadRegistrationCompleted);    

感谢您的宝贵时间。

【问题讨论】:

    标签: c# json asp.net-mvc-4 asp.net-web-api model-binding


    【解决方案1】:

    您正在代码中执行POST,因此您的 API 控制器应该有一个名为 Post 的方法:

    public SessionAPI Post(User toRegister)
    {
        ...
    }
    

    【讨论】:

    • [HttpPost] public SessionAPI register(User toRegister) { }
    • 它有 HttpPost 标头,它被触及但所有参数都为空。
    • 好的,那么您可能需要将[FromBody] 属性添加到您的参数register([FromBody]User toRegister)
    • 仍然无法正常工作。如果我检查 toRegister 的值仍然所有内部变量为空。
    • 已修复,我删除了用户类顶部的 [Serializable] 标头,现在它似乎可以正常工作了:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 2015-06-27
    相关资源
    最近更新 更多