Angular JSスクリプトからASP.NET Web APIメソッドを呼び出そうとしています。 HTTPリクエストはPOSTタイプであり、Web APIメソッドにいくつかのデータを送信しようとしています。Web APIコールの後、オブジェクトパラメータは常にnullです。
は、ここに私の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オブジェクトであるです。ここで
は私のウェブ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";
}
}
私はこのコードを実行しようとすると、私は、しかし
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; }
}
にHTTPリクエストデータをバインドしようとしています強く型付けされたC#のオブジェクトであります私のWeb APIが正しく呼び出された(デバッグによって検証された)ですが、モデルクラスのすべてのプロパティは、スクリーンショットに示すようにNULLであることがわかりました。
このポスト(Web API complex parameter properties are all null)で提案した後、私はまた、この
[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オブジェクトが正しくウェブによって受信されたことを見ましたAPIを使用していましたが、シリアル化しようとした後、オブジェクトのパラメータはnullになりました。つまり、以前と同じ結果になりました(例外はスローされませんでした)。
私は角度JSコードからJSON.stringifyメソッド呼び出しを省略しようとしていて、POSTリクエストでcontentTypeヘッダーを削除しようとしました。しかし、結果はまったく同じままでした。
テックスタック ASP.NET 4.5 ウェブAPI 角度JS 1.2.19 のVisual Studio 2015
最後に、私はGoogle Chromeのネットワークログのスクリーンショットを添付しています
ありがとう@jle !! javascritの最後(つまり入れ子になったオブジェクト)からAcademic_DetailsStaticというプロパティにすべてのプロパティがラップされているように見えます。私はちょうどdを送った。学術的な詳細Web APIへの静的およびそれは働いた – Shuaib