Asp.net mvc 3 如何使用ToSortDateString和DatePicker更改日期时间格式
我有以下字段:Asp.net mvc 3 如何使用ToSortDateString和DatePicker更改日期时间格式,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我有以下字段: @Html.TextBoxFor(model => model.Patient.dateOfBirth, new { id = "datepicker", @class = "double text white" }) 它是一个日期时间字段,具有以下元数据定义: [Required(ErrorMessage = "Date Of Birth is required")] [DisplayFormat(DataFormatString = "{0:dd MMM yyyy
@Html.TextBoxFor(model => model.Patient.dateOfBirth, new { id = "datepicker", @class = "double text white" })
它是一个日期时间字段,具有以下元数据定义: [Required(ErrorMessage = "Date Of Birth is required")]
[DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]
public DateTime dateOfBirth;
问题是,我需要它将DOB显示为d/m/y,但作为日期时间,因为我使用的日期选择器需要值保持为datetime。日期选择器返回的值具有dd/mm/yy格式。(.ToSortDateString()这次救不了我) 我试过Darin Dimitrov和的答案,但除非我是个十足的白痴,否则这些答案对我来说根本不起作用
稍后编辑:
我已经找到了解决方案,并希望从现在起与任何需要它的人分享。
@Html.HiddenFor(model => model.DOBirth, new { id = "shortDate", @class = "double text white" })
@Html.TextBox(" ", Model != null ? Model.dateOfBirth.Value.ToShortDateString() : string.Empty, new { id = "datepicker", @class = "double text white" })
并使用以下Jquery:
$('#datepicker').datepicker({
changeMonth: true,
changeYear: true,
inline: true,
onSelect: function (dateText, inst) { CalculateAge(dateText); } //an extra method
});
将得到的值存储到隐藏字段中(通过Jquery通过隐藏字段“shortDate”的id),这样就可以将值发送回控制器
我试过Darin Dimitrov的答案但除非我是
一个彻头彻尾的白痴那些对我来说真的不管用
这是因为您忘记在[DisplayFormat]
属性中添加ApplyFormatInEditMode=true
:
[Required(ErrorMessage = "Date Of Birth is required")]
[DisplayFormat(DataFormatString = "{0:dd MMM yyyy}", ApplyFormatInEditMode = true)]
public DateTime dateOfBirth;
然后:
@Html.EditorFor(model => model.Patient.dateOfBirth)
另一种可能是为日期选择器编写自定义编辑器模板:
[Required(ErrorMessage = "Date Of Birth is required")]
[DisplayFormat(DataFormatString = "{0:dd MMM yyyy}", ApplyFormatInEditMode = true)]
[UIHint("DatePicker")]
public DateTime dateOfBirth;
和内部~/Views/Shared/EditorTemplates/DatePicker.cshtml
:
@Html.TextBox(
"",
ViewData.TemplateInfo.FormattedModelValue,
new { @class = "double text white datepicker" }
)
在你看来:
@Html.EditorFor(model => model.Patient.dateOfBirth)
请注意,如果您有多个DateTime字段,我应用了
datepicker
类而不是使用id来避免冲突。您需要相应地调整选择器:$('.datepicker').datepicker()
而不是$('#datepicker')。datepicker()您当前正在使用的代码>。无法真正使用编辑器。。需要我的身份证和我的班级;因为我不使用编辑器,所以我考虑不使用ApplyFormatInEditMode=True。在本例中,您可以编写一个自定义编辑器模板,如第二个示例所示。也就是说,您不一定需要将类和id添加到文本字段中。您可以很容易地将其包装在一个div中,并将这些类应用于这个div,然后简单地调整选择器。因此,第一个解决方案仍然是一个很好且有效的解决方案。对不起,我在午休时间。。。我将尝试使用div方法;我会告诉你事情的进展