0

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になります。

提案してください


4

1 に答える 1