2

我有一个模型如下,我正在使用 Linq to SQL

public class CustomerDetails
    {
        public Customer customer { get; set; }

    }

“客户”由数据库中的单个客户填充。客户有一个字段“NextEmailDate”。我想将它绑定到一个文本框,但只显示日期而不是时间

@Html.TextBoxFor(m=> m.Customer.NextEmailDate)

但是我得到了一个文本框,其中包含文本 16/09/2012 00:00:00 我如何使这只是 2012 年 9 月 16 日?

4

7 回答 7

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之类的库。

于 2012-09-27T14:55:29.017 回答
2

如果NextEmailDateDateTime,您可以使用NextEmailDate.ToShortDateString(). 如果 is not 不是 a DateTime,你必须告诉我它是什么。

于 2012-09-27T14:39:33.563 回答
2

将此注释添加到NextEmailDate属性。

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] 
于 2012-09-27T14:39:43.830 回答
2
<%= Html.TextBoxFor(m => m.Customer.NextEmailDate, new { @Value = m.Customer.NextEmailDate.ToString("dd/MM/yyyy") })%>
于 2012-09-27T14:40:39.893 回答
1

我知道 mvc 3 已标记,但 mvc 4 有 Html.TextBox 的附加参数“格式”

于 2012-09-27T16:32:34.543 回答
0
@Html.TextBoxFor(m=> m.Customer.NextEmailDate.ToString("dd/MM/yyyy"))
于 2012-09-27T14:39:26.187 回答
0
@Html.TextBoxFor(p => p.DataFim,"{0:d}", new { @class = " datepicker form-control" })
于 2015-06-22T13:14:37.163 回答