我正在尝试在AM和PM中显示Sql Server时间字段。它在编辑模式下正确显示,但在列表模式下不显示。 型号:
public class HMSappointmentMetaData
{
public int ID { get; set; }
[Required(ErrorMessage = "Rep Name is required")]
[StringLength(50, ErrorMessage = "Max length is 50")]
public string Rep { get; set; }
[Required(ErrorMessage = "Customer Name is required")]
[StringLength(50, ErrorMessage = "Max length is 50")]
public string Name { get; set; }
[Required(ErrorMessage = "Address is required")]
[StringLength(100, ErrorMessage = "Max length is 100")]
public string Address { get; set; }
[Required(ErrorMessage = "City is required")]
[StringLength(50, ErrorMessage = "Max length is 50")]
public string City { get; set; }
[Required(ErrorMessage = "Zip is required")]
[StringLength(50, ErrorMessage = "Max length is 50")]
public string ZipCode { get; set; }
[Required(ErrorMessage = "County is required")]
[StringLength(50, ErrorMessage = "Max length is 50")]
public string County { get; set; }
[Required(ErrorMessage = "Home Phone is required")]
[StringLength(10, ErrorMessage = "Max length is 10")]
public string HomePhone { get; set; }
[Required(ErrorMessage = "Mobile Phone is required")]
[StringLength(10, ErrorMessage = "Max length is 10")]
public string CellPhone { get; set; }
[Required(ErrorMessage = "Question is required")]
[StringLength(50, ErrorMessage = "Max length is 50")]
public string OwnHome { get; set; }
[Required(ErrorMessage = "Question is required")]
[StringLength(50, ErrorMessage = "Max length is 50")]
public string HaveAttic { get; set; }
[Required(ErrorMessage = "Question is required")]
[StringLength(50, ErrorMessage = "Max length is 50")]
public string AvgElectric { get; set; }
[Required(ErrorMessage = "Question is required")]
[StringLength(50, ErrorMessage = "Max length is 50")]
public string SummerSpike { get; set; }
[Required(ErrorMessage = "Question is required")]
[StringLength(50, ErrorMessage = "Max length is 50")]
public string TriedAny { get; set; }
[Required(ErrorMessage = "Question is required")]
[StringLength(50, ErrorMessage = "Max length is 50")]
public string InsulationType { get; set; }
[Required(ErrorMessage = "Question is required")]
[StringLength(50, ErrorMessage = "Max length is 50")]
public string InsulationAge { get; set; }
[Required(ErrorMessage = "Question is required")]
[StringLength(50, ErrorMessage = "Max length is 50")]
public string LastPaint { get; set; }
[Required(ErrorMessage = "Question is required")]
[StringLength(50, ErrorMessage = "Max length is 50")]
public string Married { get; set; }
public string Spouse { get; set; }
[Required(ErrorMessage = "Occupation is required")]
[StringLength(50, ErrorMessage = "Max length is 50")]
public string Job { get; set; }
public string SpouseJob { get; set; }
public string RetireFrom { get; set; }
public string SpouseRetireFrom { get; set; }
[Required(ErrorMessage = "Appointment Date is required")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public Nullable<System.DateTime> Date { get; set; }
[Required(ErrorMessage = "Appointment Time is required")]
[DataType(DataType.Time)]
[DisplayFormat(DataFormatString = "{0:hh\\:mm}", ApplyFormatInEditMode = true)]
public Nullable<System.TimeSpan> Time { get; set; }
[DisplayFormat(DataFormatString = "{0:hh\\:mm tt}")]
public System.TimeSpan? TimeForDisplay { get { return (Time.HasValue) ? (System.TimeSpan?)DateTime.Now.TimeOfDay.Add(Time.Value) : null; } }
public HMSappointmentMetaData()
{
Time = new TimeSpan(14,30,0);
}
[DataType(DataType.MultilineText)]
public string Comments { get; set; }
public string CreditScore { get; set; }
}
列表视图:
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.City)
</th>
<th>
@Html.DisplayNameFor(model => model.Date)
</th>
<th>
@Html.DisplayNameFor(model => model.Time)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.City)
</td>
<td>
@Html.DisplayFor(modelItem => item.Date)
</td>
<td>
@Html.DisplayFor(model => model.TimeForDisplay)
</td>
<td>
@Html.ActionLink("Notes", "Index", "AdminNotes", new { AppointmentID = item.ID }, null) |
@Html.ActionLink("Edit", "Edit", new { id = item.ID }) |
@Html.ActionLink("Details", "Details", new { id = item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.ID })
</td>
</tr>
}
</table>
这导致24小时时间(14:30)
修改视图:
@Html.EditorFor(model => model.Time)
显示格式正确的时间(下午2:30)。
答案 0 :(得分:1)
我知道它不理想,但没有一点额外的工作,我无法让它工作,所以这里是选项
选项1
使用DisplayTemplate并手动格式化。
选项2 - 我更喜欢这个。
将此新属性添加到ViewModel
[DisplayFormat(DataFormatString = "{0:hh\\:mm tt}")]
public DateTime? TimeForDisplay
{
get { return (Time.HasValue)? (DateTime?)DateTime.Today.Add(Time.Value):null;}
}
在视图中使用此新显示属性,如下所示
@Html.DisplayFor(model => model.TimeForDisplay)
以下是演示 Link