我有以下模型和视图,我非常希望以'dd / MM / yyyy'格式接受日期值。但是,尽管使用DisplayFormat
注释,我仍然会使用我选择的格式获得验证错误。
[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文化来实现此目标。
答案 0 :(得分:5)
尝试在web.config中设置uiCulture
(如果将其保留到auto
,将使用客户端浏览器文化:
<globalization uiCulture="en-US"
requestEncoding="utf-8"
responseEncoding="utf-8" />
当默认模型绑定器解析请求值(根据需要调整所需文化)时,这将强制en-US
区域性格式。
同时将Date
属性输入System.Object
也不是一个很好的设计。