有关Web API DefaultModelBinder行为的问题

时间:2017-03-20 17:51:28

标签: asp.net-mvc defaultmodelbinder

鉴于,路线设置如下

对于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默认模型Binder能够从路径数据绑定EntryID的值。 但是,Web API中的Default Model Binder无法从路由数据绑定属性EntryID的值。

根据Pro ASP.NET MVC 5 Book,  DefaultModelBinders按给定顺序查找以下位置中的任何值。

  1. 的Request.Form
  2. RouteData.Values
  3. 的Request.QueryString
  4. Request.Files
  5. 这也适用于Web API DefaultModelBinder吗?如何在WebAPI DefaultModelBinder中获取entryID以绑定路径数据中的entryID。

0 个答案:

没有答案