asp.net-mvc - MVC应用程序中自定义日期格式问题

标签 asp.net-mvc metadata data-annotations

我有以下模型和 View ,我非常希望接受格式为“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; }
    }
}

和 View :

<div class="editor-field">
    <%: Html.EditorFor(model => model.Date) %> 
    <%: Html.ValidationMessageFor(model => model.Date) %>
</div>

命名空间等对于注释和主类位于同一命名空间中是正确的。这不是我第一次遇到这个问题,但我没有看到应该影响表单值和模型之间映射的注释的结果。日期模板对我没有帮助,因为我找不到方法来设置在发布创建或更新时如何解析日期。

注意: 我不希望使用不同的 UI 文化来实现此目的。

最佳答案

尝试设置uiCulture在 web.config 中(如果将其保留为 auto,将使用客户端浏览器区域性):

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

当默认模型绑定(bind)器解析请求值时,这将强制使用 en-US 区域性格式(根据需要进行调整以适应所需的区域性)。

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

关于asp.net-mvc - MVC应用程序中自定义日期格式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3953361/

相关文章:

asp.net-mvc - MVC T4 MvcTextTemplateHost 和自定义 "Controller"T4 模板

c# - 数据注释/验证和动态值

c# - 具有全局化的十进制数据类型的 MVC 模态验证错误消息

asp.net-mvc - ASP.NET身份与简单成员资格的利与弊?

c# - 使用 Office UI Fabric(没有反应和角度?)

php - 以可扩展的方式计算文字、图像、视频和音频文件数量?

audio - 通过 Microsoft DLL 或实用程序获取音频文件持续时间

c# - 用于电子邮件或电话的 ASP.NET MVC 数据注释验证器

asp.net-mvc - ASP MVC Ajax 和模型重新绑定(bind)

java - 将自定义元数据添加到二进制文件