【问题标题】:json TimeSpan return objectjson 时间跨度返回对象
【发布时间】:2013-01-08 19:42:04
【问题描述】:

我使用 Asp.net MVC4 (C#),我想从控制器加载数据以查看。 从控制器返回视图中的对象,该对象具有 TimeSpan (HH:DD:MM) 类型的属性 这是我的功能:

public JsonResult Buscar(string id){
        string Mensaje = "";
        Models.cSinDenuncias oDenuncia = new Models.cSinDenuncias();
        oDenuncia.sd_iddenuncia = id;
        var denuncia = Servicio.RecuperaDenuncia<Models.cSinDenuncias>(ref Mensaje, oDenuncia.getPk(), oDenuncia);
        return Json(denuncia);
    }

denuncia.sd_horadenuncia 有例如这个值 18:03:53 但是当我在视图中显示时我无法加载这个值这是值 [OBJECT OBJECT] 在视图中(Html.TextBoxFor):

$('#HoraDen').val(data.sd_horadenuncia);

如何恢复正确的值? (HH:MM:SS) 而不是 [OBJECT OBJECT]

问候 里卡多

【问题讨论】:

    标签: asp.net-mvc json asp.net-mvc-3 asp.net-mvc-2 asp.net-mvc-4


    【解决方案1】:

    TimeSpan 是一种复杂类型。这意味着在您的 JSON 中它是这样序列化的:

    {
        "sd_horadenuncia": {
            "Ticks": 3000000000,
            "Days": 0,
            "Hours": 0,
            "Milliseconds": 0,
            "Minutes": 5,
            "Seconds": 0,
            "TotalDays": 0.003472222222222222,
            "TotalHours": 0.08333333333333333,
            "TotalMilliseconds": 300000,
            "TotalMinutes": 5,
            "TotalSeconds": 300
        }
    }
    

    您正试图将这个复杂的对象分配给一个显然没有意义的文本字段。

    您可以在控制器操作上使用视图模型来预先格式化值:

    public ActionResult Buscar(string id)
    {
        string Mensaje = "";
        Models.cSinDenuncias oDenuncia = new Models.cSinDenuncias();
        oDenuncia.sd_iddenuncia = id;
        var denuncia = Servicio.RecuperaDenuncia<Models.cSinDenuncias>(ref Mensaje, oDenuncia.getPk(), oDenuncia);
        return Json(new 
        { 
            formattedHoradenuncia = denuncia.sd_horadenuncia.ToString() 
        });
    }
    

    然后在您的视图中,您可以使用新属性:

    $('#HoraDen').val(data.formattedHoradenuncia);
    

    另一种可能性是访问这个复杂对象的各个属性并自己格式化值:

    var hours = data.sd_horadenuncia.Hours;
    var minutes = data.sd_horadenuncia.Minutes;
    var seconds = data.sd_horadenuncia.Seconds;
    $('#HoraDen').val(hours + ':' + minutes + ':' + seconds);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      • 2013-01-17
      • 1970-01-01
      • 2015-01-25
      • 1970-01-01
      相关资源
      最近更新 更多