0

考虑以下模型:

public class ExportRequestsFilter {
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
    public DateTime? StartDate { get; set; }

    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
    public DateTime? EndDate { get; set; }

    ...

使用各自的视图:

<script type="text/javascript">
    $(document).ready(function () {
        $(".datepicker").datepicker({ dateFormat: 'dd/mm/yy' }); // this is the datepicker equivalent to dd/MM/yyyy
    });
</script>

...

<% using (Html.BeginForm(FormMethod.Post)) {%>
    ...
    <%: Html.TextBox("StartDate", Model.StartDate, new { @class = "datepicker" })%><br />
    <%: Html.TextBox("EndDate", Model.EndDate, new { @class = "datepicker" })%>

    <input type="submit" class="buttonLink" name="submitButton" value="<%: Html.Resource("Preview") %>" />

当 StartDate TextBox 上的数据为 2/4/2012 时,是否有充分的理由将UpdateModel()StartDate 设置为 2012 年 2 月 4 日而不是 2012 年 4 月 2 日?

4

2 回答 2

1

2/4/2012 是美国英语文化的标准日期时间格式。它表示 2012 年 2 月 4 日。英国英语文化的相同日期时间格式表示 2012 年 4 月 2 日。

听起来您当前的 UI 文化设置为 en-US,而不是 en-UK。您可以通过检查来检查它System.Globalization.CultureInfo.CurrentUICulture

于 2012-04-10T16:27:06.787 回答
1

这取决于解析输入的计算机的文化设置。因此,如果网络服务器设置为解析DateTime基于 en-US 文化的内容,MM/dd/yyyy即使网页设置为将其呈现为dd/MM/yyyy. 如果您想强制解析始终采用一种格式,那么当您在自定义活页夹中调用 DateTime.Parse 时,您必须传入文化信息。

编辑:实际上我认为这可以在 web.config 中设置为应用程序使用默认文化。虽然我不确定如何做到这一点,但没有使用不同的文化环境。

MSDN有一篇很好的文章,介绍了可与 MVC 一起使用的 ASP.NET 应用程序全球化。另外这篇关于 StackOverflow 的文章将解释如何在 web.config 中使用 MVC 来完成。如果您按照那里的答案,它应该会自动以您正在寻找的格式解析 DateTime。

于 2012-04-10T16:28:46.883 回答