我有一个模型如下,我正在使用Linq to SQL
public class CustomerDetails
{
public Customer customer { get; set; }
}
“客户”由数据库中的单个客户填充。客户有一个字段“NextEmailDate”。我想将它绑定到textBox但只显示日期而不是时间
@Html.TextBoxFor(m=> m.Customer.NextEmailDate)
但是我得到一个带有文本的文本框16/09/2012 00:00:00我该如何才能在2012年9月16日这样做?
答案 0 :(得分:8)
假设Customer
是您的实际实体,请引入视图模型并将其传递给您的视图。这样你就可以使用你需要的所有格式化/验证属性来装饰它。
public class CustomerViewModel
{
[Required(ErrorMessage = "Next email date is required!")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}"]
public DateTime NextEmailDate { get; set; }
...
}
public class CustomerDetails
{
public CustomerViewModel Customer { get; set; }
}
您可以手动映射属性或使用AutoMapper等库。
答案 1 :(得分:2)
如果NextEmailDate
是DateTime
,您可以使用NextEmailDate.ToShortDateString()
。如果不是DateTime
,你必须告诉我它是什么。
答案 2 :(得分:2)
将此注释添加到NextEmailDate
属性。
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
答案 3 :(得分:2)
<%= Html.TextBoxFor(m => m.Customer.NextEmailDate, new { @Value = m.Customer.NextEmailDate.ToString("dd/MM/yyyy") })%>
答案 4 :(得分:1)
我知道mvc 3已被标记,但是mvc 4为Html.TextBox提供了额外的参数“format”
答案 5 :(得分:0)
@Html.TextBoxFor(m=> m.Customer.NextEmailDate.ToString("dd/MM/yyyy"))
答案 6 :(得分:0)
@Html.TextBoxFor(p => p.DataFim,"{0:d}", new { @class = " datepicker form-control" })