我得到“id”的空参数。 如果我没有JSON.Stringify id我得到JSON原语错误。
$scope.deleteSite = function (id) {
$http.post(ROOT + 'SiteList/Delete/', JSON.stringify(id)) //null id
//$http.post(ROOT + 'SiteList/Delete/', id) //Invalid JSON primitive: 5f6d794f-bf13-4480-9afd-3b10d7b6ae32.
.success(function (result) {
// log to console?
}).
error(function (data, status, headers, config) {
// log to console?
});
这是我的siteList删除控制器。
public JsonResult Delete(String id)
{
try
{
var convertedID = new Guid(id);
_siteService.Delete(convertedID);
return Json("OK", JsonRequestBehavior.AllowGet);
}
catch (Exception e)
{
return Json("Error" + e.Message);
}
}
答案 0 :(得分:0)
注意,您也可以使用angular.toJson
。我认为可能会更好 - 但如果您愿意,可以查看实施差异。
这是Web Api吗?
Web Api:
你必须配置params,因为delete以这种方式工作。
$scope.deleteSite = function (id) {
$http.delete(ROOT + 'SiteList', { params: { id: id }})
.success(function (result) {
// log to console?
}).
error(function (data, status, headers, config) {
// log to console?
});
}
控制器操作,[FromUri]
是必需的,因为您配置了参数:
public JsonResult Delete([FromUri] Guid id)
{
try
{
_siteService.Delete(id);
return Json("OK", JsonRequestBehavior.AllowGet);
}
catch (Exception e)
{
return Json("Error" + e.Message);
}
}
未配置的参数表示:
$scope.deleteSite = function (id) {
$http.delete(ROOT + 'SiteList/' + id )
.success(function (result) {
// log to console?
}).
error(function (data, status, headers, config) {
// log to console?
});
}
控制器操作:
public JsonResult Delete(Guid id)
{
try
{
_siteService.Delete(id);
return Json("OK", JsonRequestBehavior.AllowGet);
}
catch (Exception e)
{
return Json("Error" + e.Message);
}
}
如果这不是Web Api,那么您只需要从请求数据中创建一个对象。
<强> MVC 强>:
$scope.deleteSite = function (id) {
$http.post(ROOT + 'SiteList/Delete/', { id: id})
.success(function (result) {
// log to console?
}).
error(function (data, status, headers, config) {
// log to console?
});
}
控制器操作:
public JsonResult Delete(Guid id)
{
try
{
_siteService.Delete(id);
return Json("OK", JsonRequestBehavior.AllowGet);
}
catch (Exception e)
{
return Json("Error" + e.Message);
}
}