【发布时间】:2014-08-20 04:29:56
【问题描述】:
我在表单中使用 Asp.Net MVC 4 和 Knockout。
我有一个想要格式化的日期输入。
我最终得到了这个解决方案: http://jason-mitchell.com/web-development/binding-dates-using-knockout-moment-js/
我的问题是当我提交表单时,我没有在发布的 JSON 中填写日期。
我认为问题出在自定义处理程序中,但我找不到:( 更新事件仅在加载时触发一次。
查看代码
@Html.TextBoxFor(Function(model) model.EndDate, New With {.data_bind = "date: EndDate"})
自定义绑定代码
ko.bindingHandlers.date = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var value = valueAccessor();
var valueUnwrapped = ko.utils.unwrapObservable(value);
var allBindings = allBindingsAccessor();
// Date formats: http://momentjs.com/docs/#/displaying/format/
var pattern = allBindings.format || 'L';
var output = "";
if (valueUnwrapped !== null && valueUnwrapped !== undefined && valueUnwrapped.length > 0) {
output = moment(valueUnwrapped).format(pattern);
}
if ($(element).is("input") === true) {
$(element).val(output);
} else {
$(element).text(output);
}
}
};
ko绑定代码
var viewModel = ko.mapping.fromJS(@Html.Raw(Model.ToJson()));
ko.applyBindings(viewModel);
注意:日期格式按预期工作。
我做错了什么? :(
【问题讨论】:
标签: asp.net-mvc date knockout.js format