鉴于,路线设置如下
对于 MVC:/entries/{entryID}/Children
对于 API:/api/entries/{entryID}/Children
我希望请求绑定到的模型是。
public class Entry
{
public int EntryID {get;set;}
public string EntryName{get;set;}
public string Count{get;set;}
}
和控制器如下,
对于 MVC,
public ActionResult Create(Entry entry)
对于 Web API,
public IHttpActionResult Create(Entry entry)
在这两种情况下,EntryName 和 Count 都是通过表单数据提供的。但我想通过 url 检索 EntryID,即路由数据。
只有 MVC 默认模型绑定器能够从路由数据中绑定 EntryID 的值。但是,Web API 中的 Default Model Binder 无法从路由数据中绑定属性 EntryID 的值。
根据 Pro ASP.NET MVC 5 Book,DefaultModelBinders 按给定顺序在以下位置查找任何值。
- 申请表
- RouteData.Values
- 请求查询字符串
- 请求文件
这也适用于 Web API DefaultModelBinder 吗?如何在 WebAPI DefaultModelBinder 中获取 entryID 以从路由数据中绑定 entryID。