【发布时间】:2014-06-12 12:11:54
【问题描述】:
我想在我的 asp.net mvc web 应用程序上测试数据纠察队。
1.所以我创建了以下测试模型:-
public class TestClass
{
[DataType(DataType.Date)]
public DateTime D { get; set; }
}
2.我添加了以下脚本:-
$(function () {
$(".datefield").datepicker();
});
3.在我看来,我有以下几点:-
@model MvcApplication6.Models.TestClass
@Html.EditorFor(item=>item.D)
现在日历会显示得很好,但是我有这两个问题:-
1.如果在操作方法中我指定数据时间等于今天日期如下:-
public ActionResult Index()
{
TestClass t = new TestClass();
t.D = DateTime.Now.Date;
return View(t);
}
然后日历会切换日期和月份,因此 6 月 12 日变为 12 月 6 日如下:-
2.如果我删除 dataitme 等于今天的日期,我将得到以下默认值:-
01/01/0001
3.如果我指定允许 null 的日期时间,并且我没有指定任何默认值,我将得到以下异常
[DataType(DataType.Date)]
public DateTime? D { get; set; }
传入字典的模型项为空,但是这个字典 需要“System.DateTime”类型的非空模型项。
那么任何人都可以就导致这三个问题的原因提出建议吗? 谢谢
编辑 好的,我将我的属性更改为 String 而不是 date-time ,如下所示:-
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public string CreateDate { get; set; }
但这并没有解决数据验证问题,我仍然无法输入日期,例如 26/06/2014 !
所以我尝试删除[DataType(DataType.Date)],所以我的财产变成:-
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public string CreateDate { get; set; }
但是以这种方式不会填充日期选择器,因为日期选择器被定义为填充日期类型的字段,我想我错过了一些东西,在我对事情应该如何工作的理解中?
【问题讨论】:
-
但如果我将日期选择器中的默认日期格式更改为 dd/mm,那么 .net Datetime 会将其读取为 mm/dd 吗?这是正确的吗?因为日期时间的默认格式是 mm/dd ?
标签: c# asp.net-mvc asp.net-mvc-5 jquery-ui-datepicker