WebAPI 2 の最新ビットを使用しています。デフォルトの ModelBinder が投稿された値を適切に表示しないという問題が発生しています。値がサーバーに正しくポストされていることを確認しました。リクエスト オブジェクトを使用して取得できます。そこで、独自のカスタム Model Binder を実装することにしました。現在、このカスタム バインダーが呼び出されず、デフォルト バインダーのみが呼び出されるという問題が発生しています。私は何が欠けていますか?
WebAPI メソッド
public IHttpActionResult PutOrg([ModelBinder(typeof(MyOrgModelBinder))] Org org)
{
}
カスタム ModelBinder
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Http.Controllers;
using System.Web.Http.ModelBinding;
using System.Web.Http.ValueProviders;
namespace SM4.Models
{
public class MyOrgModelBinder : IModelBinder
{
public bool BindModel(HttpActionContext controllerContext,
ModelBindingContext bindingContext)
{
var org = new Org
{
OrgCode_PK = request.Form.Get("OrgCode_PK"),
OrgHeadCode_FK = request.Form.Get("OrgHeadCode_FK"),
Code = request.Form.Get("Code"),
Name = "THIS is FROM BINDER",
Description = request.Form.Get("Description"),
Address1 = request.Form.Get("Address1"),
Address2 = request.Form.Get("Address2"),
CountryCode_FK = request.Form.Get("CountryCode_FK"),
StateCode_FK = request.Form.Get("StateCode_FK"),
CityCode_FK = request.Form.Get("CityCode_FK"),
ZIP = request.Form.Get("ZIP"),
RowStatusCode_FK = request.Form.Get("RowStatusCode_FK"),
EffectiveDate = DateTime.ParseExact(request.Form.Get("EffectiveDate"), "yyyy-MM-dd",
System.Globalization.CultureInfo.InvariantCulture),
TerminationDate = DateTime.ParseExact(request.Form.Get("TerminationDate"), "yyyy-MM-dd",
System.Globalization.CultureInfo.InvariantCulture),
};
bindingContext.Model = org;
return true;
}
}
}