I am using Knockout to make a nice looking Gui like so
Javascript:
viewModel = {
lookupCollection: ko.observableArray()
};
$(document).ready(function () {
$.ajax({
type: "GET",
url: "@Url.Action("GetView", "FakturaOmfangs", new {area = "" , id = ViewBag.id})",
}).done(function (data) {
$(data).each(function (index, element) {
var mappedItem =
{
FakturaId: ko.observable(element.FakturaId),
FakturaProdukterId: ko.observable(element.FakturaProdukterId),
Beskrivelse: ko.observable(element.Beskrivelse),
Periode: ko.observable(element.Periode),
EndDate: ko.observable(element.EndDate),
procent: ko.observable(element.procent),
Rabat: ko.observable(element.Rabat),
Pris: ko.observable(element.Pris),
Ialt: ko.observable(element.Ialt),
Value: ko.observable(element.Value),
Mode: ko.observable("display")
};
console.log(mappedItem);
viewModel.lookupCollection.push(mappedItem);
});
ko.applyBindings(viewModel);
});
});
the EndDate is a Datetime? parsed from controller like this
return Json(list, JsonRequestBehavior.AllowGet);
This is my input where i would like to put the Date into, so i can edit it.
<td><input class="form-control" type="date" data-bind="value: EndDate" /></td>
How do i format the date to the correct format? so that i can use it in input type=Date ?
Output from Log EndDate: "/Date(1494885600000)/"
Modelclass:
public class FakturaOmfang
{
//if selected type dropdown
[Key]
public int Id { get; set; }
public string Beskrivelse { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime? Periode { get; set; }
[JsonProperty]
[JsonConverter(typeof(ShortDateConverter))]
public DateTime? EndDate { get; set; }
public int? Dage { get; set; }
[DisplayName("Ydet %")]
[Range(0,100)]
public int? procent { get; set; }
[Range(0, 100)]
public int? Rabat { get; set; }
[DisplayFormat(DataFormatString = "{0:N}", ApplyFormatInEditMode = true)]
public decimal Pris { get; set; }
[DisplayFormat(DataFormatString = "{0:N}", ApplyFormatInEditMode = true)]
public decimal Ialt { get; set; }
public int FakturaId { get; set; }
public Faktura Faktura { get; set; }
public int FakturaProdukterId { get; set; }
public FakturaProdukter FakturaProdukter { get; set; }
}
public class ShortDateConverter : DateTimeConverterBase
{
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
return DateTime.Parse(reader.Value.ToString());
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(((DateTime)value).ToString(System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern));
}
}
Edit to show updated Action:
` public ContentResult GetView(int? id)
{
var list = db.FakturaOmfangs.Where(x => x.FakturaId == id).ToList();
ViewBag.FakturaProdukterId = new SelectList(db.FakturaProdukters, "Id", "Overskrift");
var result = new ContentResult(
Content = JsonConvert.SerializeObject(new { success = list }), Formatting.None, new JsonSerializerSettings()
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
NullValueHandling = NullValueHandling.Include,
DateFormatString = "dd/MM/yyyy"
},
ContentType = "application/json");
return result;
}`
Thanks. Benny.