1

鉴于,路线设置如下

对于 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 按给定顺序在以下位置查找任何值。

  1. 申请表
  2. RouteData.Values
  3. 请求查询字符串
  4. 请求文件

这也适用于 Web API DefaultModelBinder 吗?如何在 WebAPI DefaultModelBinder 中获取 entryID 以从路由数据中绑定 entryID。

4

0 回答 0