I sahiptirler:C# Web API model binder sağlayıcısı nasıl çalışır?
- isteğe URL: 'son nokta/1,2,3 q = FON?' Isteği bağlı olduğu
- hareket: ortak nesne Bar ([ModelBinder] listesi < uygun çağırmalıdır T> kimlikleri, [FromUri] dize q)
I "kimlikleri" parametresine "1,2,3" fragmanı eşlemek istediğiniz yüzden this link uygun bir ModelBinderProvider oluşturulur, model bağlayıcı.
GlobalConfiguration.Configuration.Services.Insert(typeof(ModelBinderProvider), 0, new MyModelBinderProvider());
nedeni:
public class MyModelBinderProvider: ModelBinderProvider
{
public override IModelBinder GetBinder(HttpConfiguration configuration, Type modelType)
{
IModelBinder modelBinder = null;
if (modelType.IsGenericType && (modelType.GetGenericTypeDefinition() == typeof(List<>)))
{
modelBinder = new ListModelBinder();
}
return modelBinder;
}
}
böyle Global.asax sağlayıcı kayıtlı ben istediğim için bu sağlayıcıyı yarattı, ne olursa olsun T ('1,2,3 olduğunu 'ya da' bir, iki, üç '), işe yaradı.
10 Sorun: T, 'int' diyelim; Her zaman bir istek gönderilir, 'modelType' paramater her zaman 'int' ve beklediğim değil - 'List < int>', bu nedenle istek düzgün bir şekilde ele alınmadı.
garip şey:
var simpleProvider = new SimpleModelBinderProvider(typeof(List<int>), new ListModelBinder());
GlobalConfiguration.Configuration.Services.Insert(typeof(ModelBinderProvider), 0, simpleProvider);
ben yanlış yapıyorum göremiyorum, neden 'modelType' parametredir: bu işleri ama T ne istiyorum uzman ve bunun değil gibi bir şey yapmak beklenen değer değil mi?
hakkında detaylı bilgi veriniz? Bunu yararlı olarak gördüğünüz gerçek senaryo nedir? Bu nedenle, tamamen farklı bir URI ile daha ayrıntılı bir çözüme sahip olabilecek bir şeye hack gibi görünüyor. –