我正在将 Mvc4 与 WebApi 一起使用。我正在为 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) 属性,如果未传递枚举值,则返回 false。
如果状态枚举属性没有在 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());
我面临的问题是custombinder
var input = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
,输入值为空。
请建议