ASP.Net WebApi 和 KO 日期问题

本文关键字:日期 问题 KO Net WebApi ASP | 更新日期: 2023-09-27 18:34:32

我在 ASP.Net MVC应用程序中使用EF,并且还使用WebApi来获取如下所示的元素:

[HttpGet]
    public Student GetStudent(int id)
    {
        return db.Students.AsNoTracking().FirstOrDefault(n => n.Student_ID == id);
    }

这一切都很好用,我将其直接映射到 ko 中使用。 但是,当我绑定元素的任何 DateTime 属性的值(即出生日期(时,我得到:1955-04-17T11:13:56。 我不想更改每个日期的 web api 方法或模型,是否有第三方库或挖空函数可以处理 asp.net 的日期时间并更正输入值。

ASP.Net WebApi 和 KO 日期问题

正如Sridhar在评论中建议的那样。你可以利用时刻.js来实现这一点。

我在这里创建了一个示例小提琴 - http://jsfiddle.net/sherin81/ordwenj6/

敲除代码

function viewModel()
{
    var self = this;
    self.dateInput = ko.observable("1955-04-17T11:13:56");
    self.formattedDate = ko.computed(function(){
        var m = moment(self.dateInput());
        return m.format("DD-MM-YYYY");
    });
}
ko.applyBindings(new viewModel());

.HTML

<input data-bind="value : dateInput" />
<br/>
<span data-bind="text : formattedDate()" />

为了进行演示,我使用了输入字段中的值进行格式化。可以修改代码以使用 webapi 中的值,并使用 moment.js 设置其格式。

更新

若要使用 ko 自定义绑定处理程序执行相同的操作,请执行以下操作

ko.bindingHandlers.dateFormattedByMoment = {
    update: function (element, valueAccessor, allBindingsAccessor) {
        $(element).val(moment(valueAccessor()).format("DD-MM-YYYY"));
    }
};

.HTML

<input id="customBinding" data-bind="dateFormattedByMoment : dateInput()" />

在这里工作小提琴 - http://jsfiddle.net/sherin81/ujh2cg73/