ASP.NET MVC3:使用 JQuery DatePicker 和 editorFor/TextBoxFor 以正确的格式显示日期

Posted

技术标签:

【中文标题】ASP.NET MVC3:使用 JQuery DatePicker 和 editorFor/TextBoxFor 以正确的格式显示日期【英文标题】:ASP.NET MVC3: Displaying Date in correct format with JQuery DatePicker and editorFor/TextBoxFor 【发布时间】:2012-03-01 01:30:41 【问题描述】:

在我的模型中,我有:

    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "0:dd/MM/yyyy")]
    public DateTime StartDate  get; set; 

不幸的是,它仅适用于 EditorFor,但我无法分配 EditorFor 类来启用 Jquery 日期时间选择器,因为没有 htmlAttributes 参数。

@Html.EditorFor(model => model.StartDate)
@Html.TextBoxFor(model => model.StartDate, new  @class = "datePicker", @readonly = "readonly" )

所以第一个只显示日期,但没有日期选择器。 第二个也显示时间 00:00 但有一个日期时间选择器。

注意:不要只是说,使用model.StartDate.ToString("mm/DD/yyyy")。它不起作用。

我怎样才能只设置日期。但是有一个时间选择器并且有只读的,所以我不能在里面输入任何数字。

【问题讨论】:

我对 MVC 级别的解决方案感兴趣。我最终在我自己的项目中使用标准的 html 输入元素来实现这种效果。 【参考方案1】:

我正在使用 jquery UI 日期选择器,而不是附加一个类标签,我通过以下方式设置默认日期格式:

    $(function () 
        $.datepicker.setDefaults(
            dateFormat: 'dd/mm/yy'
        );
    );

然后将其绑定到输入元素:

    $(function () 
        $("#StartDate").datepicker();
    );

希望对您有所帮助。这就是 EditorFor mvc 标签上的内容。

【讨论】:

谢谢,是的,通过字段名分配它似乎是唯一的方法,因为您似乎无法设置 htmlattributes aka 类。然后使用我的显示代码,它可以应用模型的格式,并通过它使用 datetimepicker。虽然仍然无法设置只读。我的时间选择器是另一个问题。我用@Html.TextBoxFor(model => model.EndTime, new @Value = Model.EndTime.ToString().Substring(0,5), @class = "timePicker", @readonly = "readonly" ) 克服了这个问题。疯狂

以上是关于ASP.NET MVC3:使用 JQuery DatePicker 和 editorFor/TextBoxFor 以正确的格式显示日期的主要内容,如果未能解决你的问题,请参考以下文章

如果asp.net mvc3中的大小超过4mb,则无法上传文件[重复]

活动菜单项 - asp.net mvc3 母版页

自定义 asp.net mvc 3 jquery.validate.unobtrusive

使用 jQuery $.ajax 进行 ASP.NET MVC 验证

C# asp.net MVC3 中的日历控件

ASP.NET MVC3:ValidationType ModelClientValidationRule