2016-04-04 21 views
2

WebApi denetleyici eylemine bir arabirim nesnesi listesi içeren bir model göndermek mümkün mü?Arabirim nesnelerinin listesi ASP.NET WebApi Eylemine nasıl gönderilir?

Bunu aşağıdaki gibi yaptığımda, modelim boş değil, ancak "Öğeler" özelliği hiçbir girdi içermiyor. İşte

benim kodudur:

Controller.js

public void Post(MyModel model) 
{ 
    ... 
} 

MyModel.cs

public class MyModel 
{  
    public int Id { get; set; } 
    public string Name { get; set; } 
    public IEnumerable<IItem> Items { get; set; } 
} 

IItem.cs

public interface IItem 
{ 
    string Test1 { get; set; } 
    string Test2 { get; set; } 
} 

Item.cs

public class Item : IItem 
{ 
    public string Test1 { get; set; } 
    public string Test2 { get; set; } 
} 

Ben bir özel model bağlayıcı ile mümkün olduğunu düşünüyorum, ama uygun bir örnek bulmuyorum.

+1

Denetleyici eylemi, özel model sınıfının parametresiz yapıcısını gerektirir, ancak arabirim buna sahip değildir. –

cevap

2

Bildiğim kadarıyla varsayılan model bağlayıcı sadece bu kadar MyModel.Items özelliğini değiştirerek, beton sınıfları bağlayabilir farkındayım olarak: beklendiği gibi

IEnumerable<Item> Items { get; set; } 

çalışmalıdır. Eğer bazı nedenlerden dolayı türünü değiştiremezsiniz Ancak eğer birini yapabilirsiniz:

  1. Zaten

  2. sadece kullanarak bir görünüm modeli oluşturun söz ettik olarak iItem arayüzünü destekleyen bir özel modeli cilt oluştur beton sınıfları. Mevcut türünüzü görünüm modeliyle eşleştirmeniz gerekecektir, ancak bu, özel bir model bağlayıcı IMO'su yazmaktan çok daha kolaydır.

İlgili konular