我最近從MVC4測試版更新到RC,並且遇到了WebApi項目的一個小問題。我注意到的第一件事之一是ServiceResolver被刪除。之前它被刪除,我用它來註冊通過以下方式自定義模型粘合劑供應商:如何註冊MVC4 RC中的自定義模型綁定器WebApi
IEnumerable<object> modelBinderProviderServices = GlobalConfiguration.Configuration.ServiceResolver.GetServices(typeof(ModelBinderProvider));
List<Object> services = new List<object>(modelBinderProviderServices) { new CustomDynamicObjectModelBinderProvider() };
GlobalConfiguration.Configuration.ServiceResolver.SetServices(typeof(ModelBinderProvider), services.ToArray());
它利用這種模式,粘合劑供應商的優勢作用有以下特徵:
[HttpPut]
public void Put(CustomDynamicObject model)
我試着用以下,但沒有結果,以取代舊代碼:
GlobalConfiguration.Configuration.Services.Add(typeof(ModelBinderProvider), new CustomDynamicObjectModelBinderProvider());
當我試圖將數據放置到給定的動作,該模型提供的GetBinder方法不調用並且模型參數設置爲null。我能夠通過改變Acion /方法的簽名下面的
[HttpPut]
public void Put([ModelBinder(typeof(CustomDynamicObjectModelBinderProvider))] CustomDynamicObject model)
使動作使用通過ModelBinder的屬性通緝ModelBinder的雖然這個作品我真的不希望在使用此語法我所有的控制器/操作。
我想我應該提到的是我的模型綁定提供商繼承:
System.Web.Http.ModelBinding.ModelBinderProvider
我這樣說,因爲我看到有下面的命名空間中的另一個ModelBinderProvider類:
Microsoft.Web.Mvc.ModelBinding
回顧一下:如何在MVC4 RC WebApi中註冊一個自定義模型綁定器?
感謝您的澄清。你鏈接到的帖子也幫助我弄清楚了一些事情。 –