我正在使用angular并希望将id int和一个字符串从客户端传递给web api控制器。我可以让它工作的唯一方法是在接收方法中使用类作为参数,该类具有可以映射到正在发布的数据的属性。创建一个新类只接收两个参数,例如通过将一个对象添加到它拥有的集合中来更新对象,这似乎是非常低效的。所以我试图发送一个新的字符串集合应该广告,以及拥有该集合的对象的id。
Web Api控制器
[Route("addEquipment")]
[HttpPost]
public void AddEquipment(AddNinjaEquipmentPost newEquipment)
{
//This works
}
public struct AddNinjaEquipmentPost
{
public int Id { get; set; }
public string NewEquipment { get; set; }
}
但我希望有像
这样的东西[Route("addEquipment")]
[HttpPost]
public void AddEquipment(FormDataCollection data)
{
//id = data["id"]
//newEquipment = data["newEquipment "]
}
或类似
[Route("addEquipment")]
[HttpPost]
public void AddEquipment(int id, string newEquipment )
{
}
答案 0 :(得分:0)
不幸的是,Web API无法开箱即用地处理此请求。但是通过创建自定义参数绑定存在一种解决方法:custom parameter binder
对于我之前的情况:
我发送了Math.round()
到JObject
方法,而不是创建自定义活页夹。
从我的例子:
webApi
如果提供另一个更好的答案,我也有兴趣改进我的代码:)
答案 1 :(得分:0)
有关...
[Route("addEquipment")]
[HttpPost]
public void AddEquipment(int id, string newEquipment )
{
}
您可以在查询字符串中发布该值。
POST http://localhost:1234/api/Equipment/addEquipment?id=1&newEquipment=Weights
如果您想要请求正文中的值而不是查询字符串中的值,还有其他一些方法可以执行此操作。