2013-07-15 65 views
1

好的,從MVC3遷移到MVC4後,我遇到了一個有趣的問題。 我們有一個控制器方法具有以下特徵:MVC4中的集合模型綁定是否發生了突變?

public ActionResult Delete(Guid[] items) 

這個工作在MVC3很大,但停止工作升級後MVC4 - 項陣列始終是空的。我意識到,在MVC4中,我將不得不使用ICollection來代替它:

public ActionResult Delete(ICollection<Guid> items) 

這是一個突破性改變嗎?或者,第一種方法並不是一種真正適合做MVC3的僥倖事情嗎?

所發佈的數據看起來很簡單,看起來像這樣:

items=52b37b94-1f53-4981-a698-9eb6eca30861&items=d2f8c5e5-4e04-4a97-8efd-643a4e87e48b 

而且使用jQuery($。員額)張貼

+0

你是通過jquery發佈? – EkoostikMartin

+0

這是正確的。我將更新 –

+0

這個問題該數組仍然可以工作,您是否嘗試將此屬性添加到您的jquery調用中? 'traditional:true' – EkoostikMartin

回答

0

好吧,我想通了,發生了什麼事。我開始了全新的MVC4項目來創建一個香草測試用例,並且綁定對陣列和Guid集合都能正常工作。

挖掘之後,我意識到在升級過程中我們也將autofac DI容器從版本2.5升級到3.0。一些內部結構可能已經改變,並且默認情況下啓用了動作注入。

顯然行動注射干擾模型綁定。