簡體   English   中英

ASP.NET MVC / Web API模型綁定項到集合

[英]ASP.NET MVC/Web API model binding item to collection

我將Web API用作ExtJS數據存儲的入口點,該數據庫在批處理模式下啟用了自動同步。 這意味着,可以僅用1個項或一組項來調用我定義的Web API方法,如下所述。

僅有1件的情況:

{  
 "Category":"fsf",
 "Importance":10,
 "TaskNo":5467,
 "Id":"UnplannedTask-6",
 "StartDate":"2015-09-21T03:00:00+02:00",
 "EndDate":"2015-09-21T05:00:00+02:00",
 "Cls":"",
 "Name":"",
 "ResourceId":"18"
}

有多個物品的情況:

[  
  {  
    "Category":"haer",
    "Importance":10,
    "TaskNo":5,
    "Id":"UnplannedTask-5",
    "StartDate":"2015-09-21T04:00:00+02:00",
    "EndDate":"2015-09-21T06:00:00+02:00",
    "Cls":"",
    "Name":"",
    "ResourceId":"14"
 },
 {  
  "Category":"fsf",
  "Importance":10,
  "TaskNo":5467,
  "Id":"UnplannedTask-6",
  "StartDate":"2015-09-21T03:00:00+02:00",
  "EndDate":"2015-09-21T05:00:00+02:00",
  "Cls":"",
  "Name":"",
  "ResourceId":"18"
  }
 ]

因為我注意到重載有些棘手(也許是不可能的),所以這給我的Web API帶來了一些問題。

這是接受項目列表的Web API操作:

  [HttpPost]
  public async Task<dynamic> Update(IEnumerable<Appointment> appointments)
  {
   ...
  }

在這種情況下,它再次只接受一個:

 [HttpPost]
  public async Task<dynamic> Update(Appointment appointment)
  {
   ...
  }

現在,這兩個動作都可以單獨工作。 當只有一項返回時,模型綁定是正確的。 清單發回時的情況與此相同。 到現在為止還挺好。 但是,不可能知道是通過導線發送1項還是10項。 因此,我必須能夠同時支持這兩個動作,但是重載無法以我所經歷的這種方式工作-這意味着我一次只能使用一個動作。

因此,我希望找到一種解決方案,其中可以使用模型綁定將1個項目的綁定轉換為項目的集合,以便只能使用1個接受項目列表的操作。 這可能嗎?有沒有可用的示例(和節省時間的工具)?

感謝Peter Kellner,我已經研究了這個問題,並且ExtJS的數據存儲編寫器config中似乎有一個配置設置可以啟用我的請求:

 proxy: {
    headers: { 'Accept': 'application/json' },
    type: 'ajax',
    api: {
        create: '/api/Appointments/Add',
        update: '/api/Appointments/Update',
        destroy: '/api/Appointments/Destroy'
    },
    reader: {
        type: 'json'
    },
    writer: {
        type: 'json',
        writeAllFields: true,
        allowSingle: false                 <------------------ That did the trick
    }
},

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM