Я пытаюсь создать конечную точку RESTApi, где пользователи могут отправлять несколько идентификаторов для фильтрации определенных ресурсов.WebAPI Modelbinding - [FromUri] не работает над перечислениями гидов
Поэтому я создал объект запроса, который можно использовать повторно в моем собственном проекте, чтобы все было просто (по крайней мере для меня).
При создании запроса QueryString GET-запросов я проверяю свойства request-ojects для beeing IEnumerable
. Если это так, я добавлю следующие значения:
var collection = new NameValueCollection();
foreach (var pi in request.GetType().GetProperties().Where(p => p.CanRead && p.CanWrite))
{
var propVal = pi.GetValue(request, null);
if (propVal == null)
continue;
if (pi.PropertyType.IsArray || typeof(IEnumerable).IsAssignableFrom(pi.PropertyType))
{
var enumerable = propVal as IEnumerable;
if (enumerable != null)
{
foreach (var singleValue in enumerable)
{
collection.Add(pi.Name, singleValue.ToString());
}
}
}
else
{
collection.Add(pi.Name, propVal.ToString());
}
}
return collection;
, который построит меня примерно так, например.
конечная точка принимает запрос-строительный объект его из Ури с помощью атрибута [FromUri]
.
public TheResponse EndPoint([FromUri] TheRequest request)
тогда TheRequest
имеет свойство типа IEnumerable<Guid> Ids {get;set;}
.
Однако свойство Ids всегда является пустым массивом с пустым Guid
.
Как это можно достичь? Мне нужна индивидуальная привязка модели здесь?
В соответствии с просьбой, это как мой запрос-объект выглядит следующим образом:
public class TheRequest
{
public IEnumerable<Guid> Ids { get; set; }
}
Пожалуйста, добавьте полный код TheRequest. – Sefa
Это может быть достигнуто с помощью специальной модели-связующего. – Nkosi
@Nkosi вы могли бы предоставить ссылку, с которой начать или указать мне какое-то направление на то, как следует внедрять модель-связующее? – KingKerosin