2012-06-26 28 views
0

我有以下領域的日期時間格式:
如何更改使用ToShortDateString和DatePicker的

@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格式的值。 (.ToShortDateString()不能保存我這次)

我試過達林Dimitrov答案從herehere,但除非我是一個完整的白癡那些真的不適合我。


後來編輯:
我設法找到這一解決方案,並希望與任何人從現在開始需要它分享。

@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)和值。因此,你可以發送值回控制器

回答

1

我已經試過了Darin季米特洛夫從這裏和這裏的答案,但除非我 一個完整的白癡那些沒有真正爲我工作。

那是因爲你忘了你的[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" } 
) 

和您的視圖中:我已經申請了datepicker類,而不是使用一個ID aviod衝突的,如果你有一個以上的日期時間

@Html.EditorFor(model => model.Patient.dateOfBirth) 

公告領域。您將需要相應地調整您的選擇器:$('.datepicker').datepicker();而不是您目前使用的$('#datepicker').datepicker();

+0

不能真正使用編輯器..需要我的id和我的班級;因爲我不使用編輯器,我認爲不使用ApplyFormatInEditMode = true –

+0

在這種情況下,您可以編寫一個自定義編輯器模板,如第二個示例中所示。這就是說你不一定需要將類和id添加到文本字段。你可以很容易地將它包裝在一個div中,並將這些類應用到這個div,然後簡單地調整你的選擇器。所以第一個解決方案仍然是一個很好的工作。 –

+0

對不起,我在我的午休時間...我會嘗試使用div方法;我會讓你知道它是如何去的 –