c# - Web API 模型绑定(bind)

标签 c# asp.net-web-api wcf-web-api

给定 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/

相关文章:

wcf-web-api - ASP.NET Web API 绑定(bind)方法

odata - WCF WebApi 启用 OData 查询支持

c# - OleDbDataReader 如何读取数字类型?

c# - 为什么暂停/中止线程不好?

c# - ASP Web API 帮助页面 - 从 XML <see> 标记链接到类

asp.net-web-api - ASP.NET Web API 避免查询字符串中的无效参数

c# - ASP.NET WebAPI Selfhost 没有解析到 Controller 的路由

asp.net-mvc - ASP.NET MVC API 或 WCF API

c# - 在 C# 中使用接口(interface)作为 "out"参数

c# - 不同的选项卡样式取决于选项卡项模板?