Asp.net-Mvc-4
ModelBinder 和子模型
我在某些模型中使用了一個子模型類(UserInfo),它應該包含一些與使用者相關的資訊。該子模型可用於各種模型,例如
public class Model { int string Value { get; set; } public UserInfo User { get; set; } }我創建了一個模型綁定器並在 WebApiConfig 中註冊了它
config.BindParameter(typeof(UserInfo), new UserModelBinder());問題是 WebApi 處理管道沒有呼叫 UserModelBinder。似乎子模型沒有呼叫這些模型綁定器。我錯過了什麼嗎?
看看這個問題ASP.net Web API中MVC的DefaultModelBinder是什麼等價物?有關綁定將在何處發生的一些詳細資訊。
我懷疑您
Model是否正在消息正文中傳遞?如果是,那麼 WebApi 將使用格式化程序來反序列化您的類型並處理模型,預設
XmlMediaTypeFormatter值為JsonMediaTypeFormatter或FormUrlEncodedMediaTypeFormatter。如果您在正文中發布模型,那麼根據您請求或接受的內容類型是(應用程序/xml、應用程序/json 等),您可能需要自定義序列化器設置或包裝或實現您自己的
MediaTypeFormatter.如果您使用的是 application/json,那麼您可以使用
JsonConverters自定義 UserInfo 類的序列化。此處有一個範例Web API ModelBinders - 如何以不同方式綁定對象的一個屬性,此處WebApi Json.NET 自定義日期處理internal class UserInfoConverter : JsonConverter { public override bool CanConvert(Type objectType) { return objectType == typeOf(UserInfo); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { // } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { // } }