2017-10-25 20 views
0

フォームを送信するときにコントローラに渡す必要がある複雑なオブジェクトがあります。この複雑なオブジェクトには、オブジェクトとオブジェクトのリストがあります。これは、Ajaxでポストを経由して、複雑なオブジェクトを受け取り、自分のウェブAPIコントローラです:剣道UI DateTimePickerがコントローラに正しくバインドされない

[HttpPost] 
public IHttpActionResult CreatePurchaseInvoice(NewPurchaseInvoice newPurchaseInvoice) 
{ 
    try 
    { 
     var purchaseInvoice = new PurchaseInvoice 
     { 
      Id = newPurchaseInvoice.PurchaseInvoice.Id, 
      DatePurchaseInvoice = newPurchaseInvoice.PurchaseInvoice.DatePurchaseInvoice 
     }; 

     // Here i do other stuff with the list of objects 

     _context.SaveChanges(); 
    } 
    catch(Exception ex) 
    { 
     return BadRequest(); 
    } 
    return Ok(); 
} 

これは私のHTMLフォームです:

<form id="purchaseInvoiceForm"> 
    <div class="row"> 
     <div class="col-lg-6"> 
      <label>Order:</label> 
      <select id="numberOrder" class="form-control" required name="numberOrder"> 
       <option value="">Select an order number...</option> 
      </select> 
     </div> 
     <div class="col-lg-6"> 
      <div class="form-group"> 
       <label>Date of Purchase Invoice:</label><br /> 
       <input id="datePurchaseInvoice" style="width: 70%" /> 
      </div> 
     </div> 
    </div> 

    //Here i have an html table and every row i push into an array of the complex object 
</form> 

そして、これは私がAJAX経由で複雑なオブジェクトを送る私のjQueryのコードです:

$(document).ready(function(){ 

    //this is the declaration of my complex object 
    var newPurchaseInvoice = { 
      PurchaseInvoice: {}, 
      PurchaseInvoiceDetails: [] 
    } 


    $("#purchaseInvoiceForm").submit(function (e) { 
     e.preventDefault(); 

     newPurchaseInvoice.PurchaseInvoice= { 
      Id: $("#numberOrder").val(), 
      DatePurchaseInvoice : $("#datePurchaseInvoice").val() 
     } 

     $.ajax({ 
      url: "/api/purchaseInvoices", 
      method: "post", 
      data: newPurchaseInvoice 
     }); 
    }); 
}); 

問題は、KendoDateTimePickerの日付がコントローラに正しく送信されていないことです。 私はkendoDateTimePickerで選択した日付ではなく、この日付を取得します。これはスペイン語で私のPurchaseInvoiceモデルのDatePurchaseInvoiceプロパティです:

enter image description here

これは、jQueryのための私のKendoDateTimePickerです:

$("#datePurchaseInvoice").kendoDateTimePicker({   
    value: new Date(), 
    dateInput: true 
}); 

そして、これが私のNewPurchaseInvoiceモデルです:

public class public class NewPurchaseInvoice 
{ 
    public PurchaseInvoice PurchaseInvoice{ get; set; } 
    public List<PurchaseInvoiceDetail> PurchaseInvoiceDetails{ get; set; } 
} 

この私のPurchaseInvoiceモデル:

public class PurchaseInvoice 
{ 
    public int Id { get; set; } 
    public DateTime DatePurchaseInvoice { get; set; } 
} 
+0

'Date'が掲載なっているものではありません..' DatePurchaseInvoice'は..です 'NewPurchaseInvoice' – JamieD77

+0

上の実際のプロパティ名が何であるかをあなたのNewPurchaseInvoiceモデルとPurchaseInvoiceモデルコード – JamieD77

+0

を投稿する必要があります私は今、私のポストを編集しました。あなたの返信ありがとう –

答えて

0

あなたが供給しているデータの型を指定する必要があります

contentType: 'application/json' 

そしておそらくdataTypeとあまりにもdepending on your response typeを。そしてaccording to this post、あなたの応答を文字列化する必要があるかもしれません。私はそれをする必要はないと思っていますが、複雑なデータ型に対してはAJAX操作をしばしば使用しません。

+0

はまだ日付で動作しません、剣道に何か問題がある。コントローラに送信したい他のすべてのデータは、正しく送信されますが、日付は正しく送信されません。 –

+0

また、APIを使用することができるので、val()はコントロールからデータを取得することを認識しませんでした: '$("#datePurchaseInvoice ")。data(" kendoDateTimePicker ")。value() ) ' –

関連する問題