我正在使用ASP.NET MVC 5和ASP.NET 4.51。我正试图验证我的日期为dd/MM/yyyy。1960年1月31日,但模型验证一直告诉我,这是一个无效的日期。
以下是来自其他SO帖子的建议:
我的web.config中有以下内容:
<system.web>
<globalization uiCulture="en" culture="en-AU" />
</system.web>我的视图模型如下所示:
public class PassengerItem
{
public PassengerItem()
{
DateOfBirth = new DateTime(1960, 1, 1);
}
[Required]
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime DateOfBirth { get; set; }
}
public class BookingProcessViewModel
{
/// <summary>
/// Class constructor
/// </summary>
public BookingProcessViewModel()
{
ErrorMessages = new List<string>();
Passengers = new List<PassengerItem>();
//Populate with 10 passengers. We show/hide these in the view. Currently we only allow a max of 4 pax to be booked at a time
for (int i = 0; i < 4; i++)
{
Passengers.Add(new PassengerItem());
}
}
public List<PassengerItem> Passengers { get; set; }
}控制器正被一根柱子击中,即:
[HttpPost]
public ActionResult Process(BookingProcessViewModel aViewModel)
{
}但是,我总是在模型状态中得到以下错误:

该日期的数据输入是使用jQueryUI使用以下HTML完成的:
<input aria-invalid="false" class="form-control hasDatepicker valid"
data-jqui-dpicker-changemonth="True"
data-jqui-dpicker-changeyear="True"
data-jqui-dpicker-constraininput="True"
data-jqui-dpicker-dateformat="dd/mm/yy"
data-jqui-dpicker-defaultdate="01/01/1901"
data-jqui-dpicker-maxdate="24/08/2015"
data-jqui-type="datepicker" id="Passengers_0__DateOfBirth"
name="Passengers[0].DateOfBirth" value="31/01/1960" type="text">因此,客户端验证正在通过,但是服务器端存在一个问题,我无法解决它。快把我逼疯了。有人能给我点光吗?
发布于 2015-08-24 05:32:27
将您的web.config文件更改为(两者都必须是en-AU)
globalization uiCulture="en-AU" culture="en-AU" />DefaultModelBinder使用uiCulture值将值转换为DateTime (请注意屏幕截图中的Culture: {en} )
旁注。您有[DataType(DataType.Date)],它将生成浏览器,如果您使用@Html.EditorFor(),它将生成浏览器,这意味着您需要使用DataFormatString = "{0:yyyy-MM-dd}"才能使它正常工作。
https://stackoverflow.com/questions/32174921
复制相似问题