【问题标题】:How to pass a date value from view to controller's action using json ajax如何使用 json ajax 将日期值从视图传递到控制器操作
【发布时间】: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 数组是 ma​​ny 部分,这个 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 对应的 ma​​ny 关系:

[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


    【解决方案1】:

    您的客户端代码发布了一个名称为 PurchaseDate 的字段,而您的 SalesSub 类的属性名称为 Purchase_date。模型绑定器仅在两者匹配时才起作用。

    将您的视图模型属性名称更改为PurchaseDate,它将起作用。模型绑定器将能够将有效的日期时间字符串映射到 DateTime? 实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-14
      • 2011-10-02
      • 2020-12-19
      • 2019-01-17
      相关资源
      最近更新 更多