There are 2 problems here. First is with custom binding (Date).
Here discussed that it is not that easy to apply 2 way binding with it. And second is that you have sent Json date string to the client and it is used everywhere (string like '/Date(111)/'), and when you send this string back to server it cant parse it correctly into DateTime property.
So for you it might be easier to implement simple value binding:
<div data-bind="if: model">
<input type="text" data-bind="value: model().Name" />
<input id="startDate" type="text" data-bind="value: model().StartDate" />
<input id="endDate" type="text" data-bind="value: model().EndDate" />
<input type="button" value="edit" data-bind="click: editModel" />
</div>
and
self.edit = function (m) {
var model = {
Name: ko.observable(m.Name),
StartDate: ko.observable(moment(m.StartDate).format('DD-MM-YYYY')),
EndDate: ko.observable(moment(m.EndDate).format('DD-MM-YYYY'))
};
self.model(model);
}