2013-06-18 193 views
0

我期待用户以dd-MMM-yyy格式输入日期。因此,为了验证用户输入我用下面的模型MVC日期字段验证

[DisplayFormat(DataFormatString = "{dd-MMM-yyy}", ApplyFormatInEditMode = true)] 
public DateTime ? SubmittedToDateTime { get; set; } 

不过,我得到验证错误:本场SubmittedToDateTime必须是日期。当用户输入是:2013年6月12日。

我还指出,如果该字段值从12月2013年更改为6月12日 - 2013年将不会出现错误。

感谢

+0

是什么文化你的应用程序在运行? –

+10

你认为这是正确的格式? {dd-MMM-yyy}它应该有“yyyy”而不是 –

+0

另外,我相信你需要引用格式中的标记索引? (例如'{0:dd-MM-yyyy}') –

回答

2

yyy将无法​​正常工作。两位数显示屏有yy,四位数显示屏有yyyy。所以你可能错过了一个y

0

正如另一位用户提到的,没有yyy格式。分别为yyyyyy两位或四位数年份。

此外,DataFormatString需要标记索引(如String.Format),因此而不仅仅是输出日期,敷在标记语法:

[DisplayFormat(DataFormatString = "{0:dd-MMM-yyyy}", ApplyFormatInEditMode = true)] 

另外,如果你真的希望有更多的控制(和不反对使用jQuery UI的),你可以为DateTime创建一个编辑模板,并使用DatePicker控制:

〜/查看/共享/ EditorTemplates/DateTime.cshtml

@model DateTime? 
@Html.TextBox(String.Empty, String.Format("{0:dd-MMM-yyyy}", Model.HasValue ? Model : DateTime.Today), new { @class = "datepicker"}) 

然后你必须同时引用jQuery的& jQuery的UI页面并添加某处如下:

<script type="text/javascript"> 
    $(function(){ 
    $('.datepicker').datepicker({ 
     dateFormat: 'dd-M-yy' // http://api.jqueryui.com/datepicker/#utility-formatDate 
    }); 
    }); 
</script> 

然后,在你看来,引用@Html.EditorFor(x => x.SubmittedToDateTime)

+0

我试过使用[DisplayFormat(DataFormatString =“{0:dd-MM-yyyy}”,ApplyFormatInEditMode = true)] public DateTime? SubmittedToDateTime {get;组; }但结果相同 – mangun

+0

糟糕,我认为这与我使用的格式有关。我错过了'MMM'吗?{0:dd-MMM-yyyy}'工作吗? –