在html文本框mvc中使用短日期字符串

时间:2012-09-27 14:37:39

标签: c# asp.net-mvc asp.net-mvc-3

我有一个模型如下,我正在使用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日这样做?

7 个答案:

答案 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)

如果NextEmailDateDateTime,您可以使用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" })