我正在製作一個工具,其中一個人可以得到一個引號,然後發送自己的引號。報價製作正常,但發送電子郵件時,報價數據已損壞。
Quotation
對象中的數據很好,除了Options
陣列。當發送3個數組項時,Options
數組保存3個項目,除了它們的名稱爲空且價格爲0。未正確設置數組的MVC JSON對象
使用jQuery.post
將引用發送到ASP.NET MVC 3。在C#
報價對象的樣子:
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":"[email protected]"
}
有誰知道爲什麼數組設置不正確?
編輯
如果我這個調試代碼添加到控制器:
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]);
}
}
選項[0] [名稱]:額外pagina的(52)
選項[0] [價格]:156
選項[1] [名稱]:Papier Keuze
選項[1] [價格]:68.4
個選項[2] [姓名]:Omslag
選項[2] [價格]:41.94
金額:6
BasePrice:149.91899999999998
小計:416.25899999999996
SendPrice:0
折扣:45.78848999999999
TotalPrice: 370.47051
電子郵件:[email protected]
這意味着數據也得到了控制,但仍選擇不被置權。而且我不想要一個簡單的解決方案,以後我會自己解析它,我想知道處理它的正確方法,以便MVC能夠處理它。
「的報價發送到ASP.NET MVC 3使用jQuery。後「。爲什麼你有這個限制?你可以使用'jQuery.ajax'嗎? – nemesv
看起來像在你的Quotation類中,你正在定義options數組來保存選項而不是對象。 – Derek
或者您需要重寫set函數來解析每個選項對象,並專門設置Option對象的每個屬性。 – Derek