13

我试图阻止时间出现在使用 DateTime 的生日文本字段中

我的代码:(我正在使用 Jquery DatePicker)

<label for="birthday">Birthday:</label>
            @Html.TextBox("birthday", (Model.Birthday.ToString()), new { @class = "datePicker" })

Javascript:

$(document).ready(function () {
    $('.datePicker').datepicker({ showOn: 'both', buttonImage: "/content/images/calendar-red.gif" });
});

我有日期的模型设置:

[DataType(DataType.Date)]
public DateTime? Birthday { get; set; }

文本框中的文本仍然显示:

“2010 年 8 月 21 日上午 12:00:00”

我希望文本框中的文本显示为:

“2010 年 8 月 21 日”

我已经尝试了一切:

@inherits System.Web.Mvc.WebViewPage<System.DateTime>

但不会让我这样做,因为我正在使用模型

4

4 回答 4

16

我会在视图模型上使用编辑器模板和数据注释来指定使视图更清晰的格式:

[DataType(DataType.Date)]
[DisplayName("Birthday:")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? Birthday { get; set; }

然后在你的视野内:

<span class="datePicker">
    @Html.LabelFor(x => x.Birthday)
    @Html.EditorFor(x => x.Birthday)
</span>

然后调整选择器,因为文本框将不再具有datePicker该类:

$('.datePicker :text').datepicker({ 
    showOn: 'both', 
    buttonImage: "/content/images/calendar-red.gif" 
});
于 2011-02-12T10:48:04.803 回答
2

尝试更改为:

@Html.TextBox("birthday", (Model.Birthday.Value.ToShortDateString()), new { @class = "datePicker" })

由于您的 DateTime 是Nullable您需要做.Value的,然后才能访问这些DateTime方法。

调用ToStringDateTime它会给你日期+时间。因此,ToString您不想调用,而是使用ToString格式化ToShortDateString.

MSDN 对ToShortDateString有以下说法

ToShortDateString 方法返回的字符串区分区域性。它反映了当前区域性的 DateTimeFormatInfo 对象定义的模式。例如,对于 en-US 文化,标准的短日期模式是“M/d/yyyy”;对于 de-DE 文化,它是“dd.MM.yyyy”;对于 ja-JP 文化,它是“yyyy/M/d”。特定计算机上的特定格式字符串也可以自定义,使其不同于标准的短日期格式字符串。

于 2011-02-12T10:42:01.850 回答
1

我实际上在使用 MVC 3 的 Razor 中遇到了这个问题。我最终不得不在 Shared/EditorTemplates 中创建一个 DateTime Partial 类来获取我需要的属性。
以前我的观点是:@Html.TextBoxWithAttributesFor(m => m.To, new { @class = "text-box", @readonly = "readonly" })但这一直给我时间戳。即使我尝试了 .Value.DateTime 或任何其他解决方法。但我目前的工作解决方案是:

看法:

@Html.EditorFor(m => m.To)

部分类:

@model System.DateTime
@Html.TextBox("", (Model.ToShortDateString()), new { @class = "text-box", @readonly = "readonly" })

我将此页面用作第二个来源: http ://buildstarted.com/2010/09/10/overriding-displayfor-and-editorfor-to-create-custom-outputs-for-mvc/

于 2012-01-27T22:53:27.910 回答
0

如果您有“Model.Birthday.ToString()”,则需要将其替换为“Model.Birthday.ToShortDateString()”

于 2011-02-12T10:43:55.760 回答