2012-12-05 95 views
2

是否可以將ViewModel對象傳遞給WebApi控制器操作而不是單獨的參數?將ViewModel傳遞給Web-Api操作

而不是使用:

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 & P2 = bbb testVM對象沒有被填充(null)。

而且,我想TestVM有定義valdiation attribtues和我的API控制器使用ModelState.IsValid。

回答

6

除非另有聲明否則WebApi將使用請求的內容/主體對複雜模型進行反序列化。要告訴的WebAPI使用的URL來構造模型,你需要指定[FromUri]屬性:

public IEnumerable<Contact> GetContacts([FromUri]TestVM testVM) 
{ 
    // some logic 
} 
相關問題