Reputation: 3073
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?
Upvotes: 1
Views: 425
Reputation: 2907
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.
Upvotes: 1