是否可以将ViewModel对象传递给WebApi控制器操作而不是单独的参数?
而不是使用:
public class ContactsController : ApiController
{
public IEnumerable<Contact> GetContacts(string p1, string p2)
{
// some logic
}
}
我想用:
public class ContactsController : ApiController
{
public IEnumerable<Contact> GetContacts(TestVM testVM)
{
// some logic
}
}
public class TestVM
{
public string P1 { get; set; }
public string P2 { get; set; }
}
这对我来说似乎不起作用。当我调用/ api / contacts /?P1 = aaa&amp; P2 = bbb时,testVM对象不会被填充(null)。
另外,我希望TestVM定义了valdiation attribtues,并在我的API控制器中使用ModelState.IsValid。
答案 0 :(得分:6)
除非另有说明,否则WebApi将使用请求的内容/正文对复杂模型进行反序列化。要告诉WebApi使用Url构建模型,您需要指定[FromUri]属性:
public IEnumerable<Contact> GetContacts([FromUri]TestVM testVM)
{
// some logic
}
答案 1 :(得分:0)
我知道发布另一个答案有点晚了,但是我认为这对于将.net core用作Web API服务的任何人都是有用的
public IEnumerable<Contact> GetContacts([FromQuery]TestVM testVM)