3
我有以下模型和視圖,我非常希望以'dd/MM/yyyy'格式接受日期值。但是,儘管使用了DisplayFormat
註釋,但仍然使用我選擇的格式得到驗證錯誤。MVC應用程序中的自定義日期格式問題
[MetadataType(typeof(MilestoneMetadata))]
public partial class Milestone {
public class MilestoneMetadata {
[Required][DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public object Date { get; set; }
}
}
和視圖:
<div class="editor-field">
<%: Html.EditorFor(model => model.Date) %>
<%: Html.ValidationMessageFor(model => model.Date) %>
</div>
命名空間等是正確的註釋和主要類是在相同的命名空間。這不是我第一次遇到這個問題,但我看不到任何應該影響表單值和模型之間映射的註釋結果。日期模板不能幫助我,因爲我無法找到設置發佈創建或更新日期的方式。
注意:我不希望使用不同的UI文化來實現這一點。
感謝Darin,我發現如果我將文化設置爲'en-GB',我會得到正確的格式處理。如果我將它設置爲'en-ZA',我必須使用'yyyy/MM/dd'格式。我真正的目標是不改變文化,但仍然改變日期格式。 System.Object類型的屬性從不使用。真正的日期屬性被聲明爲System.DateTime。 'object'屬性僅用於其屬性。 – ProfK 2010-10-17 15:30:23
在這種情況下,您需要編寫自定義模型聯編程序並手動將請求字符串解析爲DateTime。 – 2010-10-17 15:33:38
是的,謝謝。我已經爲所有DateTime值完成了一個模型綁定,但這似乎是一個非常長的時間來完成這樣的任務。 – ProfK 2010-10-17 17:55:49