我必须用以下格式的MM/yyyy
捕获DateTime
。我的视图模型如下所示
public class SomeViewModel
{
public string Name { get; set; }
[DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? TargetMonth { get; set; }
}
然后我有一个名为Date.cshtml
的razor编辑器模板,其中包含以下代码
@model DateTime?
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "form-control", placeholder = ViewData.ModelMetadata.Watermark })
当我选择/键入像这样的07/2018
值时,在客户端验证过程中会得到以下错误
“目标月份”字段必须是日期。
如何使用MM/yyyy
格式正确捕获月份?
发布于 2018-07-28 07:38:31
我已经在一个示例项目中复制了您的问题。问题是在TextBox帮助程序(source)中忽略了DisplayFormat属性。
我建议去找一个现有的datepicker库,有很多好的解决方案可供选择。我已经找到了一个JS Fiddle using Bootstrap Datepicker,它可以满足您的月份选择器需求。
Html:
<input type="text" class="monthPicker" placeholder="CheckIn" >
JS:
$('.monthPicker').datepicker({
autoclose: true,
minViewMode: 1,
format: 'mm/yyyy'
})
您可以更改编辑器模板以使用此日期选择器。
发布于 2018-07-28 05:59:52
你会希望视图模型上的'TargetMonth‘属性是一个字符串,而不是日期。验证字符串以匹配此正则表达式:'0-11-9/1-2{3}‘
然后,要么向数据模型添加一个get only属性来解析字符串并返回一个DateTime实例,要么在将值传递给相应的实体对象进行存储时执行转换逻辑。
https://stackoverflow.com/questions/51565933
复制相似问题