2016-10-11 7 views
2

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であることがわかりました。

enter image description here

このポスト(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のネットワークログのスクリーンショットを添付しています

enter image description here

答えて

1

変更WebAPI内のプロパティの名前を送信するプロパティの名前に変更します。 Academic_DetailsStaticというオブジェクトを送信しているようです。

また、投稿しているオブジェクトの名前を、WebAPIのモデルバインディングプロパティ名と一致するように変更してください。

+0

ありがとう@jle !! javascritの最後(つまり入れ子になったオブジェクト)からAcademic_DetailsS​​taticというプロパティにすべてのプロパティがラップされているように見えます。私はちょうどdを送った。学術的な詳細Web APIへの静的およびそれは働いた – Shuaib

関連する問題