Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 如何使用ToSortDateString和DatePicker更改日期时间格式_Asp.net Mvc 3_Razor - Fatal编程技术网

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方法;我会告诉你事情的进展