我试图阻止时间显示在使用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; }
文本框中的文字仍显示:
“8/21/2010 12:00:00 AM”
我希望文本框中的文字显示为:
“2010年8月21日”
我尝试了以下所有内容:
@inherits System.Web.Mvc.WebViewPage<System.DateTime>
但不要让我这样做,因为我是@using a model
答案 0 :(得分: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"
});
答案 1 :(得分:2)
尝试更改为:
@Html.TextBox("birthday", (Model.Birthday.Value.ToShortDateString()), new { @class = "datePicker" })
由于您的日期时间为Nullable
,因此您需要先.Value
才能访问DateTime
方法。
在ToString
上致电DateTime
时,它会为您提供日期+时间。因此,您无需使用ToString
with formatting或ToString
来调用ToShortDateString
。
MSDN对ToShortDateString
有以下说法由...返回的字符串 ToShortDateString方法是 文化敏感。它反映了 由当前定义的模式 culture的DateTimeFormatInfo对象。 例如,对于en-US文化, 标准的短日期模式是 “M / d / yyyy的”;对于de-DE文化,它 是“dd.MM.yyyy”;对于ja-JP 文化,它是“yyyy / M / d”。该 特定的特定格式字符串 电脑也可以这样定制 它与标准不同 短日期格式字符串。
答案 2 :(得分:1)
我实际上是在使用MVC 3时使用Razor遇到了这个问题。我最终必须在Shared / EditorTemplates中创建一个DateTime Partial Class来获取我需要的属性。
以前我的观点是:@Html.TextBoxWithAttributesFor(m => m.To, new { @class = "text-box", @readonly = "readonly" })
但是这给了我TimeStamp。即使我尝试过.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/
答案 3 :(得分:0)
如果您有“Model.Birthday.ToString()”,则需要将其替换为“Model.Birthday.ToShortDateString()”