i’m building an MVC3 site and using Knockout / JSON for the first
time, i’m new to JSON and not so good at Javascript as i would.
I’m using an MVC3 model in a razor view, parsed to Json
The model in the cshtml is
@model IEnumerable<MySite.Models.UserViewModel>
Then:
var initialData = @Html.Raw(Json.Encode(Model));
var viewModel = {
fields: ko.observableArray(initialData),
etc…..
All works well with foreach bindings in the of a table showing the
data etc.. but the problem is that in the JSON array/model there are
some Date that i need to change to show them correctly.
Actually the dates are displayed like /Date(1319929111857)/
I would scroll all the array and intercept the label “BirthDate” and
parse the date calling a function like this:
function formatJSONDate(jsonDate){
var newDate = dateFormat(jsonDate, "mm/dd/yyyy");
return newDate;
How can i do this?
i tried for hours to use a function like that below but i do not know
how to call the BirthDate: label of the JSON array and change the
content:
formatDate: function() {
for (var i=0; i<this.fields().length;i++)
{//foreach JSON array item,find BirthDate: /Date(sssf) and encode it correctly}
Changing the JSON will show a correct data in the view.
After that i need to be able to edit the fields with JqueryUI Datepicker and resend all the array to the controller and save i to the DB.
I’m doing it well or there are other better ways to do this?
It seems like the properties in your ViewModel are DateTimes which is causing the formatting that you are seeing. Do they need to be DateTimes?
I would make the properties of the ViewModel strings and do the formatting on the server. Doing the processing on the client is an unnecessary step.