インターフェイスにバインドする必要があるシナリオがあります-正しい型を作成するために、正しい具象型を作成する方法を知っているカスタムモデルバインダーがあります(異なる場合があります)。
ただし、作成されたタイプにはフィールドが正しく入力されていません。ここで目がくらむほど単純なものが欠けていることはわかっていますが、モデルバインダーが作業を続けてバインドするために必要な理由、または少なくとも何をする必要があるかを誰か教えてください。プロパティ?
public class ProductModelBinder : DefaultModelBinder
{
override public object BindModel (ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (bindingContext.ModelType == typeof (IProduct))
{
var content = GetProduct (bindingContext);
return content;
}
var result = base.BindModel (controllerContext, bindingContext);
return result;
}
IProduct GetProduct (ModelBindingContext bindingContext)
{
var idProvider = bindingContext.ValueProvider.GetValue ("Id");
var id = (Guid)idProvider.ConvertTo (typeof (Guid));
var repository = RepositoryFactory.GetRepository<IProductRepository> ();
var product = repository.Get (id);
return product;
}
}
私の場合のモデルは、IProduct プロパティを持つ複合型であり、入力する必要がある値です。
モデル:
[ProductBinder]
public class Edit : IProductModel
{
public Guid Id { get; set; }
public byte[] Version { get; set; }
public IProduct Product { get; set; }
}