[英]How to display a TimeSpan in MVC Razor
所以我有一段视频的持续时间,我希望在Razor中显示该持续时间。
目前我正在使用
@TimeSpan.FromSeconds(item.Duration).ToString()
但是我正在使用的其余代码使用
@Html.DisplayFor(modelItem => item.Description)
有没有办法让持续时间(目前是一个int)显示一个时间跨度? 使用@Html.DisplayFor
语法。 item.duration是一个Entity Framework模型,它在数据库中作为int保存。
约翰,
创建自己的显示模板。 为此,请按照下列步骤操作:
模型编辑(添加以下内容):
public TimeSpan MyTimeSpanProperty
{
get
{
return TimeSpan.FromSeconds(Duration);
}
}
TimeSpan.cshtml
@model TimeSpan
@string.Format("{0}:{1}:{2}", Model.Hours, Model.Minutes, Model.Seconds)
在您的视图中调用
@Html.DisplayFor(m => m.MyTimeSpanProperty)
这将显示为3:24:16
等。
这就是它的全部内容(因为它假定你将传入TimeSpan类型的属性,所以如果可能的话,看看你是否可以对你的模型进行微小改动!!)
您可以使用partial class
定义扩展模型类。
public partial class My_class_that_has_been_created_by_EF {
public string Timespan {
get {
return Timespan.FromSeconds(Duration).ToString();
}
}
}
然后在您的视图中使用它
@Html.DisplayFor(modelItem => item.Timespan)
您应该利用ASP.NET MVC中的DataAnnotations
命名空间和DisplayTemplates
第一掩模用你的财产UIHint
属性和模板设置为VideoDuration
在型号/ YourVideoModel.cs
[UIHint("VideoDuration")] public int Duration { get; set; }
在Views / Shared / DisplayTemplates / VideoDuration .cshtml中为项目添加显示模板(如果不存在,您可能需要添加文件夹DisplayTemplates
)
@model int? @string.Format("{0:g}", TimeSpan.FromSeconds(Model))
然后你可以在你的视图中使用它:
@Html.DisplayFor(m => m.Duration)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.