MVC模型接受大日期

时间:2015-05-19 05:53:14

标签: c# jquery asp.net-mvc asp.net-mvc-4

我指的是以下链接: stackoverflow.com/questions/18288675/display-datetime-value-in-dd-mm-yyyy-format-in-mvc4

你的模特

var

Razor Page

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

Jquery DatePickter

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

Webconfig文件

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

在使用日期格式dd / MM / yyyy时如2015年5月5日有效,但在使用日期时如29/5/2015时无效。

一旦我们从jquery datepicker中选择日期,文本框将显示29/5/2015。只是当它回发到服务器时,模型将显示日期为空(我使用DateTime?)。它将在2015年3月5日正常工作......

任何帮助?

编辑:

我在下面添加到我的控制器。当我回发时,下面的函数将执行,它显示en-GB。然后它将进入我想要处理httppost的另一个Action,但它显示为en-US!

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

2 个答案:

答案 0 :(得分:1)

将我的评论添加为答案:

要测试,请尝试以5/29/2015作为日期。如果这解析,那么您的应用程序文化存在问题,因为它试图将日期解析为美国格式(mm / dd / yyyy),即29/5/2015失败。

查看您的应用程序设置,看看是否在任何地方设置了en-US,或者您是否接受控制器的日期为mm / dd / yyyy,然后将其解析为您喜欢的格式。

答案 1 :(得分:0)

我会从改变你的Razor语法开始:

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

@Html.EditorFor(model => model.IssueDate)

您的浏览器文化是什么?就好像应用程序正在将日期解析为不同的文化,例如en-US,然后因为没有第29个月而失败。

我认为您还需要将日期格式更改为dd / MM / yyyy。在MSDN上有很多关于此的信息。