【发布时间】:2016-04-08 14:19:37
【问题描述】:
我一直在努力从视图中获取日期值并将其保存到数据库中为DateTime 使用 JSON AJAX 键入,但它始终保存为空值,换句话说,当它到达控制器的回发操作,日期时间,即 PurchaseDate 值为 null,好的,让我在此处放置一个断点:
请注意,在上图中,Purchase_date 为空,而如果我 console.log() ajax 请求之前客户端的 salesmain 对象,它包含从文本框中抓取的值,让 console.log(salesmain) :
所以,购买日期是从文本框中抓取的字符串:
<label>Purchase Date :</label>
@Html.TextBox("PurchaseDate")
这是我的 ajax 请求:
$.ajax({
url: '/Sales/Create',
headers: headers,
data: JSON.stringify(salesmain),
type: 'POST',
dataType: 'json',
contentType : 'application/json',
traditional : true,
success: function (result) {
if (result.Success == "1") {
//alert("saved Successfully!");
}
else {
alert(result.ex);
}
}
});
在上面的代码 salesmain 中的一个 json 对象中,该对象包含要同时保存在数据库中两个表中的数据,具有一对多的关系:
{ "SalesId": "", "SystemCode": "", "ReferenceNo": "", "SalesDate": "", "SalesPerson": "", "SalesSubs": [] }
在上面的 JSON 对象中,SalesSub 数组是 many 部分,这个 SalesSub 包含 Purchase_date 值:
{ "ItemName": "", "Qty": "", "UnitPrice": "", "PurchaseDate": "", "SalesId": "", "SystemCode": "" }
这种一对多的结构有以下模型,这是SalesMain.cs:
public class SalesMain
{
[Key, Column(Order = 0)]
public string SalesId { get; set; }
[Key, Column(Order = 1)]
public string SystemCode { get; set; }
public string ReferenceNo { get; set; }
public DateTime SalesDate { get; set; }
public string SalesPerson { get; set; }
public virtual ICollection<SalesSub> SalesSubs { get; set; }
}
以及与 SalesSub.cs 对应的 many 关系:
[Key]
public int SalesSubId { get; set; }
public string ItemName { get; set; }
public int Qty { get; set; }
public decimal UnitPrice { get; set; }
public DateTime? Purchase_date { get; set; }
[ForeignKey("SalesMain"), Column(Order = 0)]
public string SalesId { get; set; }
[ForeignKey("SalesMain"), Column(Order = 1)]
public string SystemCode { get; set; }
public virtual SalesMain SalesMain { get; set; }
请注意,Purchase_date 的类型为DateTime?,我从文本框中得到一个字符串值string != DateTime?,那么这可能是模型绑定问题?如果是,那么我应该怎么做才能使它工作?,除了 Purchase_date 值之外,上述两个模型中的每个值都绑定得很好,它在回发后总是有一个空值。我应该怎么做才能使Purchase_date 包含[HttpPost] 创建操作而不是null 值的值?任何帮助将不胜感激,在此先感谢:)
【问题讨论】:
标签: json ajax entity-framework asp.net-mvc-5 ef-code-first