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 的日期时间并更正输入值。
正如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/