使用angularjs将多个对象发送到webapi
我的ASP.NET WebApi应用程序中有以下控制器:
[Route("api/PutItem/")] [HttpPut] public IHttpActionResult PutItem(Guid id, Item item) { if (!ModelState.IsValid) }
我在“Items”AngularJs服务中有以下内容
var doEditItem = function(item){ var deferred = $q.defer(); console.log('item', item); var config = { headers: { 'Authorization': "Bearer " + $rootScope.token } //,params: {id:item.ItemId} } $http.put(sitesettings.url() + "api/PutItem/", item, config) .success(function(data){ deferred.resolve(data); })....
我最终收到这条消息:
没有找到与请求URI匹配的HTTP资源’ http:// localhost:63289 / api / PutItem /’。“,MessageDetail :”在控制器上找不到与请求匹配的“项目”。“}
我已经对参数进行了更改以添加如下项目:
jItem = {id:item.ItemId, item:item}
然后我尝试将jItem传递给put方法,如下所示:
$http.put(sitesettings.url() + "api/PutItem/", jItem, config)
我的应用程序选择了Guid,但不是新的Item。 如果我删除Guid并发送项目,我的应用程序会选择新项目。
我想知道如何更改我的应用程序,以便我可以发送一个Guid,应用程序也会选择新的项目。
我使用过Angular.toJson(item,false); 但这似乎并没有改变我的ASP.NET应用程序接收信息的方式。
非常感谢
您不能将复杂类型与原始类型一起发送到WebAPI操作,您可以发送多个基本类型(Guid,int,字符串等)或单个复杂类型( Item
)。 如果你想发送两者,解决方法是使用JObject
:
[HttpPut] public void PutItem(JObject data) { Item item = data["item"].ToObject- (); Guid id = data["id"].ToObject
(); }
从角度发送如下:
$http({ url: "/api/PutItem", method: "PUT", data: {id: SOMEGUID, item: { ......} } });
在你的代码中:
[Route("api/PutItem/")] [HttpPost] public IHttpActionResult PutItem(Guid id, Item item)
所以你发送Put或Post? 我认为这是一个问题
从一个工作项目中拉出来
AngularJS:
var apiUrl = ngRoot + '/api/ControllerName'; //ControllerName should match APIControllerName $http.put( apiUrl + '/RoutValue/' + id, model );
WebAPIController:
[HttpPut] [Route("api/APIControllerName/RoutValue/{id}")] public HttpResponseMessage Put(int id, Model model)
或模型列表
public HttpResponseMessage Put(int id, List model)
@Pakk,你的方法工作导致第一个参数“id”作为查询字符串的一部分发送,而第二个参数作为请求体的一部分发送。 这是它唯一的工作方式,从身体发送多个将无法正常工作。
- 将Angularjs表达式/变量作为路径参数传递给asp.net mvc操作链接
- 如何让Angular JS在Visual Studio 2015解决方案中工作?
- 是否可以在ASP.NET Web API和SPA中使用基于cookie的身份validation?
- Web Api 2 – 如何从HTTPGET返回映像(来自Azure存储的MemoryStream)而不保存到磁盘?
- api控制器的文件下载问题
- validation站点/应用程序以访问Web API服务
- 无法使用Ninject将依赖项注入到从Angular Service调用的ASP.NET Web API控制器中
- 通过Angular进行基本身份validation,为什么抛出错误401
- 在Asp.net Web API中处理CORS预检