我试图从Angular JS脚本调用ASP.NET Web API方法。 HTTP请求属于POST类型,我正在尝试将一些数据发送到Web API方法。
这是我的AngularJS代码
$http({
url: '/api/StudentsBasicInfo/InsertOrUpdateStudentBasicInfo',
method: "POST",
data: JSON.stringify(d),
contentType: "application/json;charset=utf-8",
dataType: 'json'
}).success(function (data, status) {
if (data == "\"success\"") {
});
在上面的javascript代码中,d是一个简单的JSON对象。
这是我的Web API
[ActionName("InsertOrUpdateStudentBasicInfo")]
public string InsertOrUpdateStudentBasicInfo([ModelBinder] StudentDynamicFormVM student)
{
try
{
StudentsBasicInfoBL studentsBasicInfoBL = new StudentsBasicInfoBL();
long returnedId = studentsBasicInfoBL.InsertStudentsBasicInfoAndEnrolledProgram(student);
if(returnedId > 0)
{
return "success";
}
else
{
return "error";
}
}
catch(Exception ex)
{
return "error";
}
}
下面是我尝试将HTTP请求数据绑定到
的强类型C#对象public class StudentDynamicFormVM
{
public long SerialId { get; set; }
public long StudentSerialId { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public int ProgramTypeId { get; set; }
public string AdmittedSemester { get; set; }
public string AdmittedDate { get; set; }
public int DepartmentId { get; set; }
public int ProgramId { get; set; }
public string MaritalStatus { get; set; }
public string Nationality { get; set; }
public string BloodGroup { get; set; }
public string Country { get; set; }
public string Religion { get; set; }
public int Mobile { get; set; }
public string Email { get; set; }
public string NationalId { get; set; }
public string PresentAddress { get; set; }
public string PermanentAddress { get; set; }
public string IdentificationMark { get; set; }
public string ColourOfHair { get; set; }
public string DateofBirth { get; set; }
}
但是,当我尝试执行此代码时,我的Web API被正确调用(通过调试验证),但是模型类的所有属性都被发现为null ,如屏幕截图。
根据这篇文章中的建议(Web API complex parameter properties are all null),我还将我的Web API代码更改为
[HttpPost]
[ActionName("InsertOrUpdateStudentBasicInfo")]
public string InsertOrUpdateStudentBasicInfo(object model)
{
try
{
var jsonString = model.ToString();
StudentsInfoHybrid student = JsonConvert.DeserializeObject<StudentsInfoHybrid>(jsonString);
StudentsBasicInfoBL studentsBasicInfoBL = new StudentsBasicInfoBL();
}
catch(Exception ex)
{
return "error";
}
}
但后来我看到Web API正确接收了JSON对象,但在尝试序列化后,对象参数变为null,即与之前相同的结果(但是没有抛出异常)
我甚至试图从我的角度JS代码中省略JSON.stringify方法调用,并尝试删除POST请求中的contentType标头。但结果仍然完全相同。
技术堆栈 ASP.NET 4.5 Web API Angular JS 1.2.19 Visual Studio 2015
最后,我附上了Google Chrome网络日志的屏幕截图
答案 0 :(得分:1)
将WebAPI中的属性名称更改为要发送的属性的名称。看起来您正在发送一个名为Academic_DetailsStatic
的对象。
或者,更改要发布的对象的名称以匹配WebAPI中的模型绑定属性名称