ModelBinding に bindingContext.ValueProvider.GetValue(bindingContext.ModelName) があり、null を返しますが、bindingContext.ValueProvider.GetValue("id") を使用すると正しいレコードが返されます。何が欠けているのですか?どういうわけかモデルクラスを登録することになっていますか?
public class EntityModelBinder<TEntity>: IModelBinder where TEntity : Entity
{
private readonly IUnitOfWork unitOfWork;
public EntityModelBinder(IUnitOfWork unitOfWork)
{
this.unitOfWork = unitOfWork;
}
public object BindModel(ControllerContext controllerContext,
ModelBindingContext bindingContext)
{
ValueProviderResult value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
var id = Guid.Parse(value.AttemptedValue);
var entity = ((IGenericRepository<TEntity>)unitOfWork.GetRepository(typeof(TEntity))).GetByID(id);
return entity;
}
}
また、コントローラー呼び出しは「Bill」であり、私のエンティティ クラスの 1 つであり、UnitOfWork の一部です。
public ActionResult Edit(Bill bill)
{
var model = Mapper.Map<Bill, BillEditModel>(bill);
return View("Edit",model);
}