首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC日期文化问题

MVC日期文化问题
EN

Stack Overflow用户
提问于 2015-08-24 05:21:16
回答 1查看 2.7K关注 0票数 0

我正在使用ASP.NET MVC 5和ASP.NET 4.51。我正试图验证我的日期为dd/MM/yyyy。1960年1月31日,但模型验证一直告诉我,这是一个无效的日期。

以下是来自其他SO帖子的建议:

我的web.config中有以下内容:

代码语言:javascript
复制
<system.web>
    <globalization uiCulture="en" culture="en-AU" />
</system.web>

我的视图模型如下所示:

代码语言:javascript
复制
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; }
}

控制器正被一根柱子击中,即:

代码语言:javascript
复制
    [HttpPost]
    public ActionResult Process(BookingProcessViewModel aViewModel)
    {
    }

但是,我总是在模型状态中得到以下错误:

该日期的数据输入是使用jQueryUI使用以下HTML完成的:

代码语言:javascript
复制
<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">

因此,客户端验证正在通过,但是服务器端存在一个问题,我无法解决它。快把我逼疯了。有人能给我点光吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-24 05:32:27

将您的web.config文件更改为(两者都必须是en-AU)

代码语言:javascript
复制
globalization uiCulture="en-AU" culture="en-AU" />

DefaultModelBinder使用uiCulture值将值转换为DateTime (请注意屏幕截图中的Culture: {en} )

旁注。您有[DataType(DataType.Date)],它将生成浏览器,如果您使用@Html.EditorFor(),它将生成浏览器,这意味着您需要使用DataFormatString = "{0:yyyy-MM-dd}"才能使它正常工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32174921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档