Temat: DateTime na widoku
Najbardziej eleganckim rozwiązaniem wydaje mi się ze będzie zdefiniowanie tego już na poziomu modelu
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
[Display(Name = "Data")]
public DateTime Data { get; set; }
Dodatkowo
Jeżeli stosujesz Jquery do do wstawiania daty
możesz zabezpieczyć:
np:
$("#Kalendarz").datepicker
({
dateFormat: 'yy-mm-dd',
showStatus: true,
showWeeks: true,
highlightWeek: true,
numberOfMonths: 1,
showAnim: "scale",
showOptions: {
origin: ["top", "left"]
}
});
Gdy chcesz już w jakiś zwariowany hipsterski sposób walidować datę to polecam:
[RegularExpression("((?:(?:[1]{1}\\d{1}\\d{1}\\d{1})|(?:[2]{1}\\d{3}))[-:\\/.](?:[0]?[1-9]|[1][012])[-:\\/.](?:(?:[0-2]?\\d{1})|(?:[3][01]{1})))(?![\\d])")]
[Display(Name = "Data")]
public DateTime Data { get; set; }
A jeżeli używasz czystego modelu i nie chcesz tracić wpisanych danych po odświeżeniu możesz spróbować:
@if(Model ==null)
{@Html.TextBoxFor(m => m.Data, new { Value = DateTime.Today.ToString("yyyy-MM-dd"), ID = "Kalendarz" })}
else{@Html.TextBoxFor(m => m.Data, new { ID = "Kalendarz" })}
oczywiście DateTime.Today.ToString("yyyy-MM-dd") możesz zastąpić dowolnym helperem
Grzegorz Zalewski edytował(a) ten post dnia 13.03.12 o godzinie 21:51