【发布时间】:2013-04-05 00:18:32
【问题描述】:
我已经在 global.asax 中为 MyList 注册了一个自定义模型绑定器。然而,模型绑定器不会为嵌套属性触发,对于简单类型它可以正常工作。在下面的示例中,它会为 Index() 触发,但不会为 Index2() 触发
Global.asax
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
ModelBinders.Binders.Add(typeof(MyList), new MyListBinder());
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
代码:
public class MyListBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
return new MyList();
}
}
public class MyList
{
public List<int> items { get; set; }
}
public class MyListWrapper
{
public MyList listItems { get; set; }
}
public class TestController : Controller
{
public ActionResult Index(MyList list) // ModelBinder fires :-)
{
return View();
}
public ActionResult Index2(MyListWrapper wrapper) // ModelBinder does not fire! :-(
{
return View();
}
}
【问题讨论】:
-
你找到解决这个问题的方法了吗?
标签: c# asp.net-mvc-4 model-binding