1

我的 Web API 控制器中有一个方法:

[HttpPost]
public void Post([FromBody]Registration registration)
{
    // omitted
}

我能够调用该方法,但参数始终为空。注册类定义为:

public class Registration
{
    public int Id { get; set; }
    public IStudent Student { get; set; }
}

public interface IStudent
{
    string FirstName { get; set; }
    string LastName { get; set; }
}

public class Student : IStudent
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

似乎 Registration 的 Student 属性是一个接口是造成这种情况的原因,因为当我尝试用具体类型替换它时,它绑定得很好。

使用接口时如何进行此绑定?另外,在我原来的 Web API 上,我接受了一个注册类型的参数。是否也可以将其作为接口(IRegistration)并仍然绑定?

4

1 回答 1

0

这是可能的,但你必须做一些额外的编码。这里实现了一个例子:

使用接口而不是具体类的 ASP.NET Web API 操作

你可能不想做这个额外的代码。它可能会出错。您可以创建 POCO/DTO 并使用 Automapper 将您的业务域模型映射到您的 POCO/DTO。

于 2016-05-09T14:06:00.880 回答