使用datetime字段的asp.net mvc 4.0 linq查询返回类似这样的内容/ Date(1391600738810)/

时间:2014-02-05 12:07:38

标签: c# linq entity-framework asp.net-mvc-4 datetime

我有一个名为ProcessoCliente的类,这个类是一个模型视图,我用它在IgniteUI igGrid上显示一些值。

这是班级:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;
using LicenciamentoMVC.Models;

namespace LicenciamentoMVC.ModelsView
{
public class ProcessoCliente
{
    public int IDProcesso { get; set; }
    public string NomeCliente { get; set; }

    public DateTime DataInserido { get; set; }
    public int Estado { get; set; }
}
public class ProcessoModel
{
    private static ProcessoCliente entity;
    public static IQueryable<ProcessoCliente> GetListaProcessosClientes()
    {
        MvcApplication1Context db = new MvcApplication1Context();

        var processos =  (from p in db.Processos
                         join c in db.Clientes on p.IDCliente equals c.IDCliente
                          orderby p.IDProcesso descending
                         select new ProcessoCliente { IDProcesso = p.IDProcesso, NomeCliente = c.Nome, DataInserido = p.DataInserido , Estado=p.Estado});


        return processos.AsQueryable<ProcessoCliente>();
    }

}
}

问题是它返回的日期时间字段为/日期(1391600738810)/,并显示为此。 如何通过linq查询转换为日期时间值为yyyy-MM-dd HH:mm:ss..2014-02-05 12:00:00? 任何人都可以告诉我为什么会发生这种情况,这是什么类型.. 根据sql server,存储的数据格式为yyyy-MM-dd HH:mm:ss ..

这是视图中网格的代码:

  @( Html.Infragistics().Grid<LicenciamentoMVC.ModelsView.ProcessoCliente>()

    .Caption("Processos")
    .ID("grid1")
    .DefaultColumnWidth("200px")
    .PrimaryKey("IDProcesso")
    .Columns(column =>
    {

        column.For(x =>x.NomeCliente).DataType("string").HeaderText("Nome do Cliente").Width("50%");
        column.For(x => x.DataInserido).DataType("DateTime").HeaderText("Data de Criação do Processo").Width("25%");
        column.For(x => x.NomeCliente).DataType("int").HeaderText("Estado").Width("25%");

        column.For(x => x.IDProcesso).DataType("int").Width("0%");




    })
    .Features(features =>
    {
        features.Paging().PageSize(20).PrevPageLabelText("Previous").NextPageLabelText("NEXT");
        features.Sorting().Mode(SortingMode.Single).ColumnSettings(settings =>
        {
            settings.ColumnSetting().ColumnKey("NomeCliente").AllowSorting(true);

        });
        features.Selection().MultipleSelection(false).Mode(SelectionMode.Row);
        features.Filtering().Mode(FilterMode.Simple);
        features.Updating()
               .EnableAddRow(false)
               .EnableDeleteRow(true)
               .EditMode(GridEditMode.None);




    })
    .DataSourceUrl(Url.Action("ListarProcessos"))    
    .UpdateUrl(Url.Action("DeleteProcessos"))        
   .AutofitLastColumn(false)
   .Width("100%")
    .AutoGenerateColumns(false)
    .DataBind()
    .Render()
    )   

以下是控制器操作的代码:

 [GridDataSourceAction]
    public ActionResult ListarProcessos()
    {
        return View(LicenciamentoMVC.ModelsView.ProcessoModel.GetListaProcessosClientes());
    }

3 个答案:

答案 0 :(得分:1)

像你这样改变你的课程

public string DataInseridoString { 
   get 
    {
         if(this.DataInserido!=null)
             retrun   this.DataInserido.ToString("yyyy-MM-dd HH':'mm':'ss");
         else
             return string.Empty;
    }
 }

并将此属性绑定到您的前端


linq没有任何意义我觉得你需要通过使用tostring和forate string来约会你的日期

theDate.ToString("yyyy-MM-dd HH':'mm':'ss")

答案 1 :(得分:0)

您是否通过某处的JSON Web服务收到了日期?如果你自己解析JSON(出于某种原因),你将得到你得到的那种字符串。因此,要解决这个问题,要么正确使用Web服务(.NET可以自行处理反序列化),要么必须解析它的日期。

这意味着 - 获取内部的数值。然后,使用此代码段:

new DateTime(1970, 1, 1).AddMilliseconds(extractedValue);

你应该得到正确的DateTime :)

答案 2 :(得分:0)

所以,经过一番搜索,我找到了解决方案...... 这就是我做的方式.. 所需的更改是在模型上进行的:

using System.Linq;
using System.Web;
using LicenciamentoMVC.Models;

 namespace LicenciamentoMVC.ModelsView
{
public class ProcessoCliente
{
    public int IDProcesso { get; set; }
    public string NomeCliente { get; set; }

    public string  DataInserido { get; set; }
    public int Estado { get; set; }
}

public class ProcessoModel
{
    private static ProcessoCliente entity;
    public static IQueryable<ProcessoCliente> GetListaProcessosClientes()
    {
        MvcApplication1Context db = new MvcApplication1Context();

        var processos =  (from p in db.Processos
                         join c in db.Clientes on p.IDCliente equals c.IDCliente
                          orderby p.IDProcesso descending
                          select new { IDProcesso = p.IDProcesso, NomeCliente = c.Nome, DataInserido = p.DataInserido, Estado = p.Estado }).ToList().Select(c => new ProcessoCliente
                          {
                              IDProcesso = c.IDProcesso,
                              NomeCliente = c.NomeCliente,
                              DataInserido = c.DataInserido.ToString(),
                              Estado=c.Estado
                          });


        return processos.AsQueryable<ProcessoCliente>();
    }

}
}

谢谢大家