Datetime MVC3&;Razor-将日期时间字符串从“更改”;年月日12:00:00 AM“;至;年月日;在文本框中

Datetime MVC3&;Razor-将日期时间字符串从“更改”;年月日12:00:00 AM“;至;年月日;在文本框中,datetime,asp.net-mvc-3,razor,html.textbox,Datetime,Asp.net Mvc 3,Razor,Html.textbox,我试图阻止时间出现在使用DateTime的生日文本字段中 我的代码:(我正在使用Jquery日期选择器) 我有日期的模型设置: [DataType(DataType.Date)] public DateTime? Birthday { get; set; } 文本框中的文本仍然显示: @inherits System.Web.Mvc.WebViewPage<System.DateTime> “2010年8月21日12:00:00上午” 我希望文本框中的文本显示为: @inheri

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

我的代码:(我正在使用Jquery日期选择器)

我有日期的模型设置:

[DataType(DataType.Date)]
public DateTime? Birthday { get; set; }
文本框中的文本仍然显示:

@inherits System.Web.Mvc.WebViewPage<System.DateTime>
“2010年8月21日12:00:00上午”

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

@inherits System.Web.Mvc.WebViewPage<System.DateTime>
“8/21/2010”

我尝试了以下各项:

@inherits System.Web.Mvc.WebViewPage<System.DateTime>
@继承System.Web.Mvc.WebViewPage
但我不会让我这么做,因为我正在使用一个模型

尝试更改为:

@Html.TextBox(“生日”,(Model.birth.Value.ToShortDateString()),新的{@class=“datePicker”})

由于DateTime可为
,因此在访问
DateTime
方法之前,需要执行
.Value

DateTime
上调用
ToString
时,它将为您提供日期+时间。因此,您不需要调用
ToString
,而是希望使用或
toSortDateString

MSDN有以下几点要说

返回的字符串 ToSortDateString方法是 文化敏感。它反映了 由当前 区域性的DateTimeFormatInfo对象。 例如,对于en-US文化, 标准的短日期模式是 “年月日”;对于de de culture,它 是“dd.MM.yyyy”;为ja JP 文化,它是“yyy/M/d”。这个 特定文件上的特定格式字符串 电脑也可以定制,所以 它与标准不同 短日期格式字符串


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

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

[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>

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

视图:

部分类别:

@model System.DateTime
@Html.TextBox("", (Model.ToShortDateString()), new { @class = "text-box", @readonly = "readonly" })
我将此页面用作第二个来源:

您也可以使用
#Birthday
作为选择器,这样编辑器输出将添加一个带有属性名的id。@Filip,是的,
#birth
可以工作,但我不喜欢视图中的魔术字符串,因为如果我在视图模型上重命名此属性,或者在对象层次结构的某个更深层使用此编辑器模板,id也可能会更改为类似于
#Root_Sub_birth
的内容。你完全正确。我认为这是一个更好的方法。我只是指出这是可能的。非常方便,谢谢,只要一个问题;当数据类型也构成声明的一部分时,具有指定数据类型的注释的目的是什么?[DataType(DataType.Date)]和公共日期时间?当您这样做时发生了什么?在这种情况下,您是否尝试过.ToString(“MMddyyyy”),这似乎不适用于VB.NET。我得到一个错误“从字符串“MMddyyy”转换为整型无效。奇怪的是,它可以与C一起正常工作#
@Html.EditorFor(m => m.To)
@model System.DateTime
@Html.TextBox("", (Model.ToShortDateString()), new { @class = "text-box", @readonly = "readonly" })