繁体   English   中英

数据正在 SQL DB 中保存为 1/1/0001 12:00:00 AM

[英]Data is being saved in SQL DB as 1/1/0001 12:00:00 AM

我是 ASP.NET Core 的新手,并且像使用日期/时间的任何其他语言一样很痛苦。 我有一个 HTML 表单,其中我的字段在加载时看起来像这样:

在此处输入图像描述

最后两个字段(即加入日期和上次更改日期)背后的代码是:

<input class="form-control-sm w-100" id="date_joined" value="@(Employee.DateJoined == DateTime.MinValue ? DateTime.UtcNow : Employee.DateJoined)" autocomplete="off" />
<input class="form-control-sm w-100" id="last_changed" value="@DateTime.Now" readonly="readonly" />

如您所见,Last Changed 字段是只读的,但用户可以在 Date Joined 字段中更改日期。 现在,当单击保存按钮时,已成功保存 Date Joined 的值,但 Last Changed 的值保存为1/1/0001 12:00:00 AM 这是单击保存按钮时发生的情况的 controller 代码:

public IActionResult SaveEmployee(Employee employee) {
            try
            {
                _db.Employees.Add(employee);
                _db.SaveChanges();
                return Json(new { success = true, message = "Saved Successfully" });
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return Json(new { success = false, message = "Error while saving" });
            }
}

现在员工的数据来自类型脚本:

   private save() {
        try {
            const employee = this.createEmployee();

            Util.request(this.urlSaveEmployee, 'post', 'json', (response) => {
                if (response != null) {
                    $.notify(response.message);
                    location.reload();
                } else {
                    $.notify(response.message);
                    console.error('Failed to get data #T7G985. Please try again.');
                }
            }, () => { }, employee);
        } catch (e) {
            console.error(e);
        }
    }

    private createEmployee() {
        try {

            const employee = {
                Firstname: $('#first_name').val(),
                Lastname: $('#last_name').val(),
                Position: $('#position').val(),
                Department: $('#department').val(),
                Salary: $('#salary').val(),
                DateJoined: $('#date_joined').val(),
                LastChanged: $('#last_changed').val()
            };

            return employee;
        } catch (e) {
            console.error(e);
        }
    }
}


知道为什么它仍然以 DateTime 的最小值保存日期吗?
更新

通过断点,我可以看到 typescript 正在返回正确的值。 在此处输入图像描述

此外,当employee从类型脚本传递给控制器时,这是显示日期错误的地方。

在此处输入图像描述

您的 model Employee的属性为LastUpdated ,并且您正在从javascript LastChanged

post object 属性LastChanged更新为LastUpdated然后它将起作用。

您的createEmployee()将更新如下。

private createEmployee() {
    try {

        const employee = {
            Firstname: $('#first_name').val(),
            Lastname: $('#last_name').val(),
            Position: $('#position').val(),
            Department: $('#department').val(),
            Salary: $('#salary').val(),
            DateJoined: $('#date_joined').val(),
            LastUpdated: $('#last_changed').val()  // Updated property name
        };

        return employee;
    } catch (e) {
        console.error(e);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM