1
我有一個自定義ModelBinder(MVC3),由於某種原因沒有被解僱。下面是代碼中的相關部分:派生屬性不工作的自定義模型綁定
查看
@model WebApp.Models.InfoModel
@using Html.BeginForm()
{
@Html.EditorFor(m => m.Truck)
}
EditorTemplate
@model WebApp.Models.TruckModel
@Html.EditorFor(m => m.CabSize)
ModelBinder的
public class TruckModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
throw new NotImplementedException();
}
}
的Global.asax
protected void Application_Start()
{
...
ModelBinders.Binders.Add(typeof(TruckModel), new TruckModelBinder());
...
}
InfoModel
public class InfoModel
{
public VehicleModel Vehicle { get; set; }
}
VehicleModel
public class VehicleModel
{
public string Color { get; set; }
public int NumberOfWheels { get; set; }
}
TruckModel
public class TruckModel : VehicleModel
{
public int CabSize { get; set; }
}
控制器
public ActionResult Index(InfoModel model)
{
// model.Vehicle is *not* of type TruckModel!
}
爲什麼不是我的自定義模型綁定器發射?
完美,現在有道理。謝謝Darin。 –
快速跟進。我嘗試了這一點,它的作用大部分,除了我的模型值都返回default/null。我將用我現在擁有的更新OP中的代碼。 –
沒關係,我打算將其標記爲答案,因爲它解決了我自定義ModelBinder的原始問題未被正確綁定的問題。我回滾我的編輯,並將在這個新問題上創建一個新問題。再次感謝。 –