Ich schreibe einen benutzerdefinierten Modelbinder für mein Webapi. Ich versuche, die Querystring zu bekommen und die Modelleigenschaften zu füllen. Ich bekomme das richtige Modell, aber es fehlen die Validierungsattribute für die Modelleigenschaften. Kann mir jemand sagen, was ich falsch mache? Hier finden Sie meine benutzerdefinierte Modellbinder und das Modell.WebApi CustomModelBinder führt keine Validierungen für die Modelleigenschaften durch
public class SearchCriteriaModelBinder : IModelBinder
{
public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)
{
if (bindingContext.ModelType != typeof(SearchCriteria))
{
return false;
}
var searchCriteria = new SearchCriteria();
var type = searchCriteria.GetType();
var querystringVals = actionContext.Request.GetQueryNameValuePairs();
var keyValuePairs = querystringVals as IList<KeyValuePair<string, string>> ?? querystringVals.ToList();
if (!keyValuePairs.Any())
{
bindingContext.Model = searchCriteria;
return true;
}
foreach (var value in keyValuePairs)
{
var key = value.Key;
var prop = type.GetProperty(key, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
if (prop == null)
{
continue;
}
prop.SetValue(searchCriteria,value.Value);
}
bindingContext.Model = searchCriteria;
return true;
}
}
public class SearchCriteria
{
public SearchCriteria()
{
Param1 = "";
Param2 = "";
PageIndex = 0;
PageSize = 10;
}
public string Param1 { get; set; }
public string Param2 { get; set; }
public int PageIndex{ get; set; }
public int PageSize { get; set; }
[IsNumeric]
publist string MinimumVal {get;set;}
}
Dank