给定 ASP.NET Web API 路由:
example/{Id}
它映射到以下 ApiController 操作方法:
public void Example(Model m)
{
...
}
模型类定义为:
public class Model
{
public int Id { get; set; }
public string Name { get; set; }
}
当我将 JSON { "Name": "Testing"}
发布到 URL /example/123
然后 Id
属性时 Model
对象未绑定(bind)。它保持为 0 而不是 123。
如何使模型绑定(bind)也包含路由数据中的值?我宁愿不必为看似常见的用例编写自定义模型绑定(bind)器。任何想法将不胜感激。谢谢!
最佳答案
完成您要查找的内容的最简单方法是向您的方法添加另一个参数,并指定哪个参数来自请求的哪个部分。
例子:
[HttpPost]
public void Example([FromUri]int id, [FromBody]Model m) {
// ...
}
现在您的 /examples/{id}
路由将能够成功绑定(bind) - 因为 Example
方法有一个名为 id
的参数它正在 URI 中寻找。要填充您的模型,您也可以在其中传递 ID,或者执行如下操作:
[HttpPost]
public void Example([FromUri]int id, [FromBody]Model m) {
m.Id = id; // Make sure the model gets the ID as well.
}
然后只需将 { "Name": "Testing"}
中的内容发送到 /example/123
即可,如上文所述。
关于c# - Web API 模型绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11862164/