在Asp.NET MVC中以dd / mm / yyyy格式显示DateTime值


72

是否可以借助中的方法以dd / mm / yyyy格式显示DateTime值?我试图通过使用一些格式并在相关属性中添加一些注释(如下所示)来做到这一点,但这没有任何意义。解决该问题的任何帮助将不胜感激。HTML HelperAsp.NET MVC@Html.LabelFor

模型:

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public Nullable<System.DateTime> RegistrationDate { get; set; }

Answers:


57

经过几个小时的搜索,我只是用几行代码解决了这个问题

您的模特

      [Required(ErrorMessage = "Enter the issued date.")]
      [DataType(DataType.Date)]
      public DateTime IssueDate { get; set; }

剃刀页

     @Html.TextBoxFor(model => model.IssueDate)
     @Html.ValidationMessageFor(model => model.IssueDate)

jQuery DatePicker

<script type="text/javascript">
    $(document).ready(function () {
        $('#IssueDate').datepicker({
            dateFormat: "dd/mm/yy",
            showStatus: true,
            showWeeks: true,
            currentText: 'Now',
            autoSize: true,
            gotoCurrent: true,
            showAnim: 'blind',
            highlightWeek: true
        });
    });
</script>

Webconfig文件

    <system.web>
        <globalization uiCulture="en" culture="en-GB"/>
    </system.web>

现在,您的文本框将接受“ dd / MM / yyyy”格式。


1
谢谢队友,除了web.config事情我什么都做着,但是当我在我的网站中添加了web.config时,它运行得非常完美
Ehsan Sajjad 2014年

2
我尝试了您所说的所有内容,但始终都失败了。我猜您没有激活不打扰的jquery,因为如果您激活了它,则会抛出验证错误,指出该字段不是有效日期,(请尝试使用2014年1月31日,bcb 1月31日这样的日期。)告诉我你是否有同样的问题。Thnks
Yogurtu 2014年

我刚刚添加了WebConfig部分,它足以解决问题-MVC5帮助器允许您为日期指定格式,因此可见显示不是问题-我陷入了其中包含AU / GB日期的隐藏字段的困扰
Rob 2015年

尝试但不起作用,已设置模型,进行了重建,在创建视图中包含了脚本,并且视图为((@ @ Html.TextBoxFor(model => model.startDate,new {htmlAttributes = new {@class =“ datepicker”} })))....仍在IE8到IE 11中不起作用
SAR

这个答案对我有用,但是dateFormat不起作用,最后我意识到我正在使用Bootstrap datepicker,它的属性不同,是详细信息。
Furkan Ekinci,

85

您要做的就是在html helper调用中应用所需的格式,即。

@Html.TextBoxFor(m => m.RegistrationDate, "{0:dd/MM/yyyy}")

您无需在模型类中提供日期格式。


7
而且,如果您担心区域格式,可以尝试{0:d}
Frictionlesspulley

1
如果您在IE视窗中执行网页,便会自行修正,这是google chrome,您不会看到日期选择器
SAR

11

我知道这是一个比较老的问题,但是作为参考,一种不带任何数据注释或任何其他设置的格式化日期的简单方法如下:

@Html.TextBoxFor(m => m.StartDate, new { @Value = Model.StartDate.ToString("dd-MMM-yyyy") })

上述格式当然可以更改为任何格式。


当服务器期望日期时间并且提交一些格式化的字符串时,如何解决提交的格式?
Muflix

@David这节省了我整周的时间:)
M Hanif

1
@Muflix您需要将StartDate类型设置为DateTime,mvc会自动将其转换为DateTime
M Hanif 19'Jul

8

由于问题是“显示”:

@Html.ValueFor(model => model.RegistrationDate, "{0:dd/MM/yyyy}")

7

或者只是在您的视图(剃刀页面)中使用它

@item.ResgistrationhaseDate.ToString(string.Format("dd/MM/yyyy"))

我建议不要在模型类中添加日期格式


被低估的解决方案
爱德华

2

您需要使用html helper,并且不需要在模型类中提供日期格式。例如:

@Html.TextBoxFor(m => m.ResgistrationhaseDate, "{0:dd/MM/yyyy}")

2

2019年回答这个问题可能为时已晚。但我尝试了所有答案,但没有一个对我有用。因此,我通过以下方式简单地解决了问题:

@Html.EditorFor(m => m.SellDateForInstallment, "{0:dd/MM/yyyy}", 
               new {htmlAttributes = new { @class = "form-control", @type = "date" } })

EditorFor 对我有用。

请注意,这SellDateForInstallment是一个Nullable日期时间对象。

public DateTime? SellDateForInstallment { get; set; } // Model property
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.