1

私は 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 がありますが、ビューに表示されているときにこの値を読み込めません。

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

どうすれば正しい値を回復できますか? (HH:MM:SS) で [OBJECT OBJECT] ではない

よろしくリカルド

4

1 に答える 1

5

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);

もう 1 つの可能性は、この複雑なオブジェクトの個々のプロパティにアクセスし、値を自分でフォーマットすることです。

var hours = data.sd_horadenuncia.Hours;
var minutes = data.sd_horadenuncia.Minutes;
var seconds = data.sd_horadenuncia.Seconds;
$('#HoraDen').val(hours + ':' + minutes + ':' + seconds);
于 2013-01-25T13:50:27.133 に答える