在不同的浏览器和国家/地区使用MVC / Razor处理日期格式的正确或最佳做法是什么?

问题描述 投票:0回答:0

在我的应用程序(MVC 5,引导程序)中,我具有MVC脚手架的默认设置。

我希望日期显示为英国用户的dd / mm / yyyy格式。 这是日期和注释的数据模型/类声明:

[Required, DatabaseGenerated(DatabaseGeneratedOption.Computed)]
[DataType(DataType.Date)]
[Column(TypeName = "Date")]
[DisplayName("Invoice Date")]
public DateTime InvoiceDate { get; set; } 

在Internet Explorer中可以正常工作,但在Firefox,Opera或Edge中则不能。

在后三个中进行编辑时,日期可能仅在编辑字段中显示dd / mm / yyyy,大概是因为浏览器提供了自己的编辑控件并以某种方式依赖于特定形式。 我不确定那个

我做了一些阅读,并说在日期中添加此注释可解决此问题:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]

我尝试了一下,但似乎可行,但仔细检查后发现日期显示为错误格式,而不显示为不编辑。 浏览器之间存在一些差异。

然后,当我回到在IE上对其进行测试时,日期格式现在是错误的。

所以我的问题是,您如何在MVC / razor中跨不同的浏览器正确处理此问题? 什么是正确或最佳实践方法?

而且,当然,什么是最佳实践方法是处理此问题并确保用户文化/国家等使用正确的日期格式?

先感谢您。

在视图中将Bootstrap与mvc和EditorFor等结合使用,例如:

<div class="form-group">
    @Html.LabelFor(model => model.PaymentDate, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.PaymentDate, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.PaymentDate, "", new { @class = "text-danger" })
    </div>
</div> 

我尝试了Bootstrap.v3.datetimepicker,但这在Firefox或Opera中不起作用。 我显然希望日期选择器具有与其他引导程序组件相同的外观。

任何帮助表示赞赏。

date razor browser format
© www.soinside.com 2019 - 2024. All rights reserved.