我有以下模型和 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/