我有一个angularjs资源,如下所示:
return $resource('/api/report',
{ },
{
save: { method: 'POST', url: '/api/fileupload/savefile', isArray: false },
});
我使用此资源的angularjs控制器如下:
$scope.save = function () {
var reportFieldsSample = [{ Field: 'ff', Value: 'gg' }, { Field: 'aa', Value: 'dd' }];
Report.save({ reportParams: reportFieldsSample},
{ },
function (content) {
console.log(content);
});
此路线的我的WebApiConfig是:
config.Routes.MapHttpRoute(
"SaveFile",
"api/fileupload/savefile",
new { controller = "FileUpload", action = "SaveFile" },
new { httpMethod = new HttpMethodConstraint("POST") });
我收到的mvc api控制器如下:
[HttpPost]
public HttpResponseMessage SaveFile(IList<Parameter> reportParams)
{
//reportParams is null
}
以这种方式声明参数类:
public class Parameter
{
public string Field { get; set; }
public string Value { get; set; }
}
请求进入我的api控制器,但控制器的reportParams
参数始终为null。
你能帮我指出一下这个问题吗?感谢
答案 0 :(得分:2)
您在web api控制器中获取null的原因是您从客户端发送的结构与服务器参数声明不匹配。
您可以在服务器端执行的操作是声明
等对象class ReportParamsModel {
public IList<Parameters> reportParams {get; set;}
}
您的控制器方法变为
public HttpResponseMessage SaveFile(ReportParamsModel params)
你准备好了
您还可以在webapi中使用动态支持,其中控制器方法变为
public HttpResponseMessage SaveFile(dynamic data) {
//data.reportParams contains you array (but each object again is a dynamic object.
}