WebApi で Mvc4 を使用しています。webApi に Dto オブジェクトを使用しています。私は以下のように列挙しています。
public enum Status
{
[FlexinumDefault]
Unknown = -1,
Active = 0,
Inactive = 100,
}
Dto 構造は次のとおりです。
[DataContract]
public class abc()
{
[DataMemebr]
[Required]
int Id{get;set;}
[DataMember]
[Required]
Status status{get;set}
}
dto オブジェクトの enum(status) プロパティを検証し、enum 値が渡されない場合は false を返すカスタム モデル バインダーを作成しました。
status enum プロパティが dto オブジェクトで渡されない場合、例外をスローする必要があります
public bool BindModel(System.Web.Http.Controllers.HttpActionContext actionContext, System.Web.Http.ModelBinding.ModelBindingContext bindingContext)
{
var input = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (input != null && !string.IsNullOrEmpty(input.AttemptedValue))
{
if (bindingContext.ModelType == typeof(Enum))
{
//var actualValue = null;
var value = input.RawValue;
APIコントローラーには、次のようなアクションメソッドがあります
public void Create([FromUri(BinderType = typeof(EnumCustomModelBinder))]abcdto abc)
{
global.asax.cs で、次のように設定しました
GlobalConfiguration.Configuration.BindParameter(typeof(Enum), new EnumCustomModelBinder());
私が直面している問題はカスタムバインダーです
var input = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
、入力値がnullになります。
提案してください