2012-02-08 12 views
5

sto lavorando in un progetto in cui ho creare una griglia utilizzando i dati dal database, nel mio controller ho questo codiceritorno JSON dal regolatore MVC, ma formato di data non corretta in javascript

List<IEmployeeEntity> list = new Employee(connectionString).GetEmployeeRecord(); 

Mi ci restituisce la lista dei dipendenti con qualche data e ulteriormente lo converto in Json usando return Json (lista); Ma il formato della data ho ottenuto nel mio java griglia di script come/Data (1.325.075,075113 millions)/ Il mio codice JavaScript è come

$.ajax({ 
     url: ../getRecord, 
     type: 'POST', 
     data: {}, 
     async: false, 
     success: function (result) { 
      if (result !== "") { 
         Create Grid  
         } 
        } 
       }); 
+0

è utile? –

+0

Infine risolvo il mio problema con questo, Elenco list = new Employee (connectionString) .GetEmployeeRecord(); ritorno JSON (list.Select (n => nuova { n.key1, AddedOn = n.AddedOn.Value.ToShortDateString() : String.Empty, n.key2, n.key3 })) ; –

+0

possibile duplicato di [ASP.NET MVC JsonResult Date Format] (http://stackoverflow.com/questions/726334/asp-net-mvc-jsonresult-date-format) –

risposta

0

il suo rilascio non javascript penso che avete bisogno di formiato si data in voi codice come avete richiesto cioè solo nel codice C#.

somthing come di seguito potrebbe aiutare ..

List<IEmployeeEntity> list = new Employee(connectionString).GetEmployeeRecord(); 
list.All(x => { x.mydate = x.mydate.ToString("dd/MM/yyyy"); return true; }) 

o

provare questa soluzione quando la vostra proprietà è di tipo datetime perché in primo che vi darà un errore se il tipo di proprietà è datetime

var q = from o in MyList 
     select new { mydate = x.mydate.ToString("dd/MM/yyyy"), 
        prop1 = o.prop1, 
        prop2 = o.prop2 
        }; 
+0

Sì, la mia proprietà è di tipo datetime ed è anche null in grado. Sto affrontando lo stesso problema ancora. Ho provato DateTimeFormatInfo dtfi = new DateTimeFormatInfo(); dtfi.ShortDatePattern = "MM-gg-aaaa"; list.ForEach (f => f.AddedOn = Convert.ToDateTime (f.AddedOn, dtfi)); così come il vostro. –

0

Sì, è un problema lato server (generazione). qual è il tipo di proprietà della data nell'entità Employee. comportamento predefinito chiama il suo metodo ToString().

1

avevo creato due metodi di estensione per tale scenario

/// <summary> 
/// Converts the value of the current System.DateTime object to its equivalent string representation using the specified format and culture-specific format information. 
/// </summary> 
/// <param name="date">DateTime instance</param> 
/// <param name="format">A standard or custom date and time format string.</param> 
/// <returns>A string representation of value of the current System.DateTime object as specified by format and provider.</returns> 
public static string ToFormatString(this DateTime date, string format) { 
    return date.ToString(format, new CultureInfo("en-US")); 
} 

/// <summary> 
/// Returns the number of milliseconds since Jan 1, 1970 (useful for converting C# dates to JS dates) 
/// </summary> 
/// <param name="dt">Date Time</param> 
/// <returns>Returns the number of milliseconds since Jan 1, 1970 (useful for converting C# dates to JS dates)</returns> 
public static double UnixTicks(this DateTime dt) { 
    DateTime d1 = new DateTime(1970, 1, 1); 
    DateTime d2 = dt.ToUniversalTime(); 
    TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks); 
    return ts.TotalMilliseconds; 
} 

È possibile scegliere uno di essi. Per convertire la data in stringa, puoi semplicemente farlo,

var dateString = myDate.ToFormatString("dd/MM/yyyy"); 

Non devi preoccuparti della cultura della macchina.

Spero che questo ti aiuti.

0

ho fatto qualcosa di simile in questo modo:

mettere la griglia in una vista -partial. dal controler invece di JSON ritorno ritornare vista parziale:

List<IEmployeeEntity> list = new Employee(connectionString).GetEmployeeRecord(); 
    return PartialView("GridPartial", list); 

Secondo lei: 1. Uso: @model IEnumerable. 2. aggiungere un div che contiene il parziale:

<div id="partial"> 
    @Html.Partial("GridPartial", @model)   
    </div> 

e poi in ajax yout:

$.ajax({ 
     url: ../getRecord, 
     type: 'POST', 
     data: {}, 
     async: false, 
     success: function (result) { 
       if (result.indexOf("<!DOCTYPE html>") == -1) { 
         $("#partial").empty(); 
         $("#partial").html(result); 
        } 
        } 
       }); 

in vista parziale foreach nel modello (lista yout) e riempire la griglia ...

0

Il JavascriptSerializer utilizzato da .Net produce quel particolare formato di data.

È possibile convertirlo in una data JavaScript con il seguente se si desidera formattarlo lato client:

var javascriptDate = new Date(parseInt(dateTimeInNetFormat.substr(6))) 
0

Ho risolto questo problema per me stesso nel modo seguente:

Basta aggiungere a IEmployeeEntity 1 file aggiuntivo che formatta questo DateTime come necessario e lo utilizza in seguito su callback.

class IEmployeeEntity 
{ 
    public DateTime StartDate {set; get;} 

    public DateTime FormatedStartDate { get { return StartDate.ToString("MM/dd/yyyy") } } 

} 

Quindi basta usare FormatedStartDate in Javascript e otterrete formato corretto.

o se avete un po 'di vista di classe è sufficiente fare

class IEmployeeEntity 
{ 
    private DateTime startDate; 
    public DateTime StartDate 
    { 
     set 
      { 
       startDate = value; 
      } 
     get { 
       return startDate.ToString("MM/dd/yyyy"); 
      } 
    } 
} 
0

risolvo il problema seguendo

List<IEmployeeEntity> list = new Employee(connectionString).GetEmployeeRecord(); 
     return Json(
      list.Select(
        n => new { 
        n.key1, 
        AddedOn = n.AddedOn.Value.ToShortDateString() : String.Empty, 
        n.key2, n.key3 
     })); 
0

Esso restituisce formato della data del server side. È necessario definire la propria funzione per modificare il formato della data.

function jsonDateFormat(jsonServerDate) { 

// Changed data format; 
return (new Date(parseInt(jsonServerDate.substr(6)))).format("mm-dd-yyyy/h:MM tt"); 

};

Problemi correlati