Quotation throw javascript を取得し、その見積もりを自分自身に送信できるツールを作成しています。見積書の作成は順調ですが、メール送信時に見積書データが破損しています。
オブジェクト内のデータは、配列Quotation
を除いて問題ありません。Options
3 つの配列項目を送信する場合、名前が null で価格が 0 であるOptions
ことを除いて、配列は 3 つの項目を保持します。
見積もりは、を使用して ASP.NET MVC 3 に送信されますjQuery.post
。
C# の Quotation オブジェクトは次のようになります。
public class Quotation
{
public string Email { get; set; }
public string Product { get; set; }
public int Amount { get; set; }
public decimal BasePrice { get; set; }
public decimal SendPrice { get; set; }
public Option[] Options { get; set; }
public decimal Discount { get; set; }
public decimal SubTotal { get; set; }
public decimal TotalPrice { get; set; }
}
public class Option
{
public string Name { get; set; }
public decimal Price { get; set; }
}
アクション メソッドは次のようになります。
[HttpPost]
public JsonResult Offerte(Models.Quotation quotation)
{
//
}
jQuery は次のようになります。
$.post(baseUrl + "/api/Offerte/", jsonContent, function (data) {
alert(data.Message);
});
jsonContent オブジェクトは次のようになります。
{
"Options":[
{
"Name":"Extra pagina's (16)",
"Price":40
},
{
"Name":"Papier Keuze",
"Price":30
},
{
"Name":"Omslag",
"Price":29.950000000000003
}
],
"Amount":"5",
"BasePrice":99.96000000000001,
"SubTotal":199.91000000000003,
"SendPrice":0,
"Discount":19.991,
"TotalPrice":179.91900000000004,
"Email":"someone@example.com"
}
配列が正しく設定されていない理由を知っている人はいますか?
編集
このデバッグコードをコントローラーに追加すると:
using (var writer = System.IO.File.CreateText(Server.MapPath("~/App_Data/debug.txt")))
{
writer.AutoFlush = true;
foreach (var key in Request.Form.AllKeys)
{
writer.WriteLine(key + ": " + Request.Form[key]);
}
}
Options[0][Name]: Extra pagina's (52)
Options[0][Price]: 156
Options[1][Name]: Papier Keuze
Options[1][Price]: 68.4
Options[2][Name]: Omslag
オプション[2][価格]: 41.94
金額: 6
基本価格: 149.91899999999998
小計: 416.25899999999996 送信
価格: 0
割引: 45.78848999999999 合計価格:
370.47051
電子メール: someone@example.com
これは、データはコントローラーに到達しますが、オプションがまだ正しく設定されていないことを意味します。そして、後で自分で解析するという簡単な修正はしたくありません.MVCがそれを処理するように、正しい処理方法を知りたいです。