MVC3&Razor - 在文本框中将日期字符串从"mm/dd/yyyy 12:00:00 AM"更改为"mm/dd/yyy"

Tim*_*een 13 datetime html.textbox razor asp.net-mvc-3

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

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

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

Javascript:

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

我有日期的模型设置:

[DataType(DataType.Date)]
public DateTime? Birthday { get; set; }
Run Code Online (Sandbox Code Playgroud)

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

"8/21/2010 12:00:00 AM"

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

"2010年8月21日"

我尝试了以下所有方面:

@inherits System.Web.Mvc.WebViewPage<System.DateTime>
Run Code Online (Sandbox Code Playgroud)

但是不要让我这样做,因为我正在使用模特

Dar*_*rov 16

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

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

然后在你的视图中:

<span class="datePicker">
    @Html.LabelFor(x => x.Birthday)
    @Html.EditorFor(x => x.Birthday)
</span>
Run Code Online (Sandbox Code Playgroud)

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

$('.datePicker :text').datepicker({ 
    showOn: 'both', 
    buttonImage: "/content/images/calendar-red.gif" 
});
Run Code Online (Sandbox Code Playgroud)

  • @Filip,是的`#Birthday`可以工作,但是我不喜欢视图中的魔术字符串,因为如果我在视图模型上重命名这个属性,或者我在对象层次结构的更深处使用这个编辑器模板,id也可能会变成某个东西比如`#Root_Sub_Birthday`. (3认同)