2013-01-24 132 views
1

我使用Asp.net MVC4(C#),我想從控制器加載數據以查看。 從控制器返回視圖中的對象,該對象具有時間跨度類型的屬性(HH:DD:MM) 這是我的功能:json TimeSpan返回對象

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秒但是,當顯示在視圖中,這是值[對象的對象] 在視圖(Html.TextBoxFor)我無法加載此值:

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

如何恢復正確的值? (HH:MM:SS),而不是[對象的對象]

問候 裏卡多

回答

4

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