2012-02-08 28 views
5

estoy trabajando en un proyecto en el que crear una cuadrícula con datos de la base de datos, en mi controlador Tengo este códigoVolver JSON desde el controlador MVC pero Formato fecha no adecuada en javascript

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

Me devuelve la lista de empleados con alguna fecha y luego los convierto en Json usando return Json (list); Pero el formato de fecha que tengo en mi java rejilla secuencia de comandos como/Fecha (1325075075113)/ Mi código Javascript es como

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

¿es útil? –

+0

Finalmente resuelvo mi problema con esto, Lista list = new Employee (connectionString) .GetEmployeeRecord(); retorno Json (list.Select (n => new { n.key1, AddedOn = n.AddedOn.Value.ToShortDateString() : String.Empty, n.key2, n.key3 })) ; –

+0

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

Respuesta

0

su problema no javascript creo que se necesita para formate que la fecha en que el código como que necesita es decir, solo en el código C#.

algo como a continuación para intentar ..

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

o

probar esta solución cuando su propiedad es de tipo fecha y hora porque en una primera se le dará un error si el tipo de propiedad es datetime

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

Sí, mi propiedad es de tipo datetime y también null capaz. Todavía estoy enfrentando el mismo problema. Intenté DateTimeFormatInfo dtfi = new DateTimeFormatInfo(); dtfi.ShortDatePattern = "MM-dd-aaaa"; list.ForEach (f => f.AddedOn = Convert.ToDateTime (f.AddedOn, dtfi)); , así como la suya. –

0

Sí, es un problema del lado del servidor (generación). ¿Cuál es el tipo de propiedad de fecha en la entidad Empleado? comportamiento predeterminado llama a su método ToString().

1

que había creado dos métodos de extensión para tal escenario

/// <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; 
} 

Usted puede elegir cualquiera de ellos. Para convertir la fecha a una cadena, simplemente, haga,

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

No tiene que preocuparse por la cultura de la máquina.

Espero que esto te ayude.

0

he hecho algo como esto en la siguiente forma:

poner la rejilla en una vista -partial. de su controladora insted de JSON retorno devolver vista parcial:

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

En su opinión: 1. uso: @model IEnumerable. 2. añadir un div que contiene el parcial:

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

y luego en ajax yout:

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

en la vista foreach parcial en el modelo (lista yout) y rellenar la cuadrícula ...

0

El JavascriptSerializer utilizado por .Net produce ese formato de fecha particular.

Puede convertirlo en una fecha JavaScript con la siguiente si desea formatearlo lado del cliente:

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

He resuelto este problema por mí mismo de la siguiente manera:

acaba de agregar a IEmployeeEntity 1 archivo adicional que formateará este DateTime según lo necesite y luego lo utilizará en la devolución de llamada.

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

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

} 

Entonces sólo tiene que utilizar FormatedStartDate en su Javascript y obtendrá formato correcto.

o si tiene alguna vista de clases sólo tiene que hacer

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

resuelvo mi problema siguiendo

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

Devuelve la fecha formato de servidor de lado. Necesita definir su propia función para cambiar el formato de fecha.

function jsonDateFormat(jsonServerDate) { 

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

};

Cuestiones relacionadas