C# 如何在ASP.NET MVC中只显示月份和年份
我正在尝试使月份和年份显示,而不是dd/mm/yyyy。 我的代码如下: 这是型号代码C# 如何在ASP.NET MVC中只显示月份和年份,c#,asp.net,asp.net-mvc,date,datepicker,C#,Asp.net,Asp.net Mvc,Date,Datepicker,我正在尝试使月份和年份显示,而不是dd/mm/yyyy。 我的代码如下: 这是型号代码 [Display (Name = "ValidFrom")] [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:MMM-yyyy}" , ApplyFormatInEditMode = true)] public System.DateTime ValidFrom { get; set
[Display (Name = "ValidFrom")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:MMM-yyyy}" , ApplyFormatInEditMode = true)]
public System.DateTime ValidFrom { get; set; }
<div class="form-group">
@Html.LabelFor(model => model.ValidFrom, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.ValidFrom, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.ValidFrom, "", new { @class = "text-danger" })
</div>
</div>
这是查看文件
[Display (Name = "ValidFrom")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:MMM-yyyy}" , ApplyFormatInEditMode = true)]
public System.DateTime ValidFrom { get; set; }
<div class="form-group">
@Html.LabelFor(model => model.ValidFrom, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.ValidFrom, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.ValidFrom, "", new { @class = "text-danger" })
</div>
</div>
@LabelFor(model=>model.ValidFrom,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.ValidFrom,new{htmlAttributes=new{@class=“form control”}})
@Html.ValidationMessageFor(model=>model.ValidFrom,“,new{@class=“text danger”})
是否有一种方法只能使mm/yyyy显示?您可以使用类似的方法:
您可以使用类似的方法:
从UI的角度来看,您所拥有的应该可以很好地工作。但是,如果支持
date
HTML5输入类型的浏览器将输入呈现为type=“date”
,则浏览器控件将覆盖显示。HTML5控件只用于月份和年份,因此如果需要以这种方式格式化,则需要确保使用标准的type=“text”
输入
也就是说,我真的不确定发布的值是否会绑定到MVC。可能,但也可能不是。如果它没有正确绑定,您可能需要发布到字符串属性,然后将其强制为DateTime
。你可以这样做:
public string ValidFromString { get; set; }
public DateTime ValidFrom
{
get
{
DateTime validFrom;
return DateTime.TryParse(ValidFromString, out validFrom)
? validFrom
: default(DateTime);
}
set { ValidFromString = value.ToString("MMM-yyyy"); }
}
然后,您将发布到
ValidFromString
,并将ValidFrom
从UI的角度来看,您所拥有的应该可以正常工作。但是,如果支持date
HTML5输入类型的浏览器将输入呈现为type=“date”
,则浏览器控件将覆盖显示。HTML5控件只用于月份和年份,因此如果需要以这种方式格式化,则需要确保使用标准的type=“text”
输入
也就是说,我真的不确定发布的值是否会绑定到MVC。可能,但也可能不是。如果它没有正确绑定,您可能需要发布到字符串属性,然后将其强制为DateTime
。你可以这样做:
public string ValidFromString { get; set; }
public DateTime ValidFrom
{
get
{
DateTime validFrom;
return DateTime.TryParse(ValidFromString, out validFrom)
? validFrom
: default(DateTime);
}
set { ValidFromString = value.ToString("MMM-yyyy"); }
}
然后,您将发布到
ValidFromString
,并将ValidFrom
应用此属性。我已经测试过了,效果很好
[DisplayFormat(DataFormatString ="{0:MM/yyyy}",ApplyFormatInEditMode =true)]
应用此属性。我已经测试过了,效果很好
[DisplayFormat(DataFormatString ="{0:MM/yyyy}",ApplyFormatInEditMode =true)]
HTML5支持月份类型。因此,以文本框为例,您可以:
@Html.TextBoxFor(m => m.MonthYear, new { type = "month"})
这将使用浏览器自己的月份选择器(在Chrome、Firefox和Edge上)
实际上,这会创建以下HTML:
<input id="MonthYear" name="MonthYear" type="month">
默认情况下,HTML5月份类型显示MMMM yyyy(即完整的月份名称和4个字符的年份),或任何本地默认值(例如,在葡萄牙语中,它将显示“agosto de 2019”)
默认值或模型值总是以“yyyy-MM”格式读取,因此不必担心不同语言的浏览器
最后,数据是MVC端的DateTime(因此,它将在1/month/year 12:00:00 AM中显示),day默认为1(非常类似于不使用时,小时、分钟和秒也设置为默认值)。HTML5支持键入month。因此,使用textboxfor作为示例,您可以执行以下操作:
@Html.TextBoxFor(m => m.MonthYear, new { type = "month"})
这将使用浏览器自己的月份选择器(在Chrome、Firefox和Edge上)
实际上,这会创建以下HTML:
<input id="MonthYear" name="MonthYear" type="month">
默认情况下,HTML5月份类型显示MMMM yyyy(即完整的月份名称和4个字符的年份),或任何本地默认值(例如,在葡萄牙语中,它将显示“agosto de 2019”)
默认值或模型值总是以“yyyy-MM”格式读取,因此不必担心不同语言的浏览器
最后,数据是MVC端的DateTime(因此,它将在1/month/year 12:00:00 AM中显示),day默认为1(非常类似于不使用时,小时、分钟和秒也设置为默认值).你的约会挑选者在哪里?@Liam我想他指的不是约会挑选者,而是“`”,请看这篇文章@Liam只是把它放在抱歉的地方。三个M(MMM yyyy)是吗不知怎么搞砸了字符串格式?你能显示原始HTML吗?你的日期选择器在哪里?@Liam我想他指的不是日期选择器,而是“`”,请看这篇文章@Liam只是把它放在抱歉的地方。三个M(MMM yyyy)是吗不知怎么搞砸了字符串格式?你能显示原始HTML吗?HTML5中有一个名为type=“month”的月份控件。Chrome、Firefox和Edge支持它,并显示一个月份选择器。HTML5中有一个名为type=“month”的月份控件。Chrome、Firefox和Edge支持它,并显示一个月份选择器。