4

鉴于此虚拟机

public class ApplicationDTO : BaseDTO
{
    public DateTime Date { get; set; }
    public int JobId {get;set;}
    public int Status {get;set;}
    [Required]
    public string Message { get; set; }
    public string ExpertCode { get; set; }
}

因此我有一个隐藏的领域

@Html.Hidden("Date", DateTime.Now)

哪个提琴手向我展示了我所期望的发送到服务器(英国格式,我在英国!)

在此处输入图像描述

但在控制器上,日期显示为默认最小值。日期

在此处输入图像描述

它只是英国格式吗?如果是这样,我最好的方法是什么?虽然目前我将其设置为当前日期,但可能它可以设置为任何给定的日期,即

@Html.HiddenFor(x => x.Date)

我正在使用 AJAX 提交表单,如果这有所作为。

4

4 回答 4

6

如果是 Get MVC,则在模型绑定期间默认使用文化不变格式(基本上是美国格式)。所以它不接受英国日期格式。我相信设计原因是查询字符串可以被传递,因此它需要是文化不变的(我不是 100% 相信这个逻辑)。

本文介绍了一个可能的解决方案http://xhalent.wordpress.com/2011/05/14/localization-of-dates-in-asp-net-mvc/

我们只是确保我们永远不会使用英国日期格式进行获取

这个问题还涵盖了DateTime 和 ASP.NET MVC 3 模型绑定的全球化问题

于 2013-02-28T23:23:00.013 回答
1

您应该使用数据注释来格式化模型或视图模型上的日期

public class ApplicationDTO : BaseDTO
{
   [DisplayFormat(DataFormatString="{0:dd/MM/yyyy}", ApplyFormatInEditMode=true)]
   public DateTime Date { get; set; }
   public int JobId {get;set;}
   public int Status {get;set;}
   [Required]
   public string Message { get; set; }
   public string ExpertCode { get; set; }
}

根据您应用格式。正如我所见,您没有为您的财产提供任何格式

于 2013-02-28T23:13:43.960 回答
0

我对 dd.MM.yyyy 格式有类似的问题,必须将 web.config 中的全球化元素设置为适当的文化和 uiCulture 属性设置。

于 2013-02-28T23:16:37.233 回答
0

如果您使用 @Html.Hidden (不是 For 助手),它将无法将请求中的参数与模型中的属性相匹配。

如果您使用 @Html.HiddenFor(x=>x.Date, "28/2/2013") 您将看到正确填充的日期。

您还可以验证 Request.Params 集合。在动作中放置一个断点。您会看到其中一个参数有您的日期.... JQuery 不会以任何方式影响这一点。

于 2013-02-28T23:23:12.653 回答