MVC应用程序中的自定义日期格式问题

时间:2010-10-17 13:20:44

标签: asp.net-mvc metadata data-annotations

我有以下模型和视图,我非常希望以'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文化来实现此目标。

1 个答案:

答案 0 :(得分:5)

尝试在web.config中设置uiCulture(如果将其保留到auto,将使用客户端浏览器文化:

<globalization uiCulture="en-US" 
               requestEncoding="utf-8" 
               responseEncoding="utf-8" />

当默认模型绑定器解析请求值(根据需要调整所需文化)时,这将强制en-US区域性格式。

同时将Date属性输入System.Object也不是一个很好的设计。