Angularjs asp.net mvc带angular和多参数ajax调用HttpPostedFileBase文件获取空值
在这里,我从angular service发送一个对象和一个文件:Angularjs asp.net mvc带angular和多参数ajax调用HttpPostedFileBase文件获取空值,angularjs,ajax,asp.net-mvc-5,httppostedfilebase,Angularjs,Ajax,Asp.net Mvc 5,Httppostedfilebase,在这里,我从angular service发送一个对象和一个文件: $scope.addProject = function () { { var project = {}; project["Id"] = $scope.Id; project["ProjectCode"] = $scope.ProjectCode; var file = $scope.myFile;
$scope.addProject = function () {
{
var project = {};
project["Id"] = $scope.Id;
project["ProjectCode"] = $scope.ProjectCode;
var file = $scope.myFile;
projectModelService.saveProject(project,file)
.success(function (data) {
})
.error(function (xhr) {
$ngBootbox.alert('Error in saving data');
});
}
};
saveProject: function (project) {
var parameters = { project: project, file: file };
var fdata = new FormData();
fdata.append('file', file);
var param = { project: project, file: fdata.append('file', file) };
return $http({
url: '/Project/CreateProject',
method: 'POST',
data: project
// contentType: false, // Not to set any content header
// processData: false, // Not to process data
// transformRequest: angular.identity,
// headers: { 'Content-Type': undefined },
dataType: "json",
data: JSON.stringify(param)
})
},
在我的服务中:
$scope.addProject = function () {
{
var project = {};
project["Id"] = $scope.Id;
project["ProjectCode"] = $scope.ProjectCode;
var file = $scope.myFile;
projectModelService.saveProject(project,file)
.success(function (data) {
})
.error(function (xhr) {
$ngBootbox.alert('Error in saving data');
});
}
};
saveProject: function (project) {
var parameters = { project: project, file: file };
var fdata = new FormData();
fdata.append('file', file);
var param = { project: project, file: fdata.append('file', file) };
return $http({
url: '/Project/CreateProject',
method: 'POST',
data: project
// contentType: false, // Not to set any content header
// processData: false, // Not to process data
// transformRequest: angular.identity,
// headers: { 'Content-Type': undefined },
dataType: "json",
data: JSON.stringify(param)
})
},
在my Project/Createproject中:
public JsonResult CreateProject(Project project, HttpPostedFileBase file)
{
}
现在的问题是,在任何情况下,我的HttpPostedFileBase文件都返回null。但如果我通过单个参数传递文件,则为:
uploadProjectModelList: function (file) {
var fdata = new FormData();
var url = '/Project/UploadProjectFGModelListExcelFile';
fdata.append('file', file);
return $http.post(url, fdata, {
transformRequest: angular.identity,
headers: { 'Content-Type': undefined }
})
}
它显示文件值,但每当使用它传递多个参数时,都会找到类似项目对象的文件,但项目对象为空。如何将多个参数作为对象和文件从ajax传递到MVC5中的asp.net控制器?您可以将
项目
参数作为表单数据
有效负载的一部分传递:
var fdata = new FormData();
var url = '/Project/UploadProjectFGModelListExcelFile';
fdata.append('file', file);
fdata.append('project.Id', project.id);
fdata.append('project.Foo', project.foo);
fdata.append('project.Bar', project.bar);
fdata.append('project.Baz.Bazinga', project.baz.bazinga);
...
return $http.post(url, fdata, {
transformRequest: angular.identity,
headers: { 'Content-Type': undefined }
});
标准字段命名规则适用于ASP.NET MVC模型绑定器。我如何通过完整的项目obj和在控制器中如何通过参数定义它??