ASP.NET MVC3 Razor实体框架 - DataFormatString属性不起作用

时间:2011-09-08 17:50:37

标签: asp.net asp.net-mvc-3 razor entity-framework-4.1 jquery-ui-datepicker

当我尝试在模型中创建或保存日期时,验证会转换无效的日期格式,而不是尊重我在DataFormatString(dd / MM / yyyy)中指定的格式。我看到框架尝试仅以MM / dd / yyyy格式保存日期。我想用dd / MM / yyyy输入/输出它。

我有以下型号:

public class MyModel {

        public int MyModelID { get; set; }

        [DataType(DataType.EmailAddress)]
        public string Email { get; set; }

        [DataType(DataType.Date)]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
        public DateTime BornDate { get; set; }
}

我有编辑模板来显示已编辑的数据:

@model DateTime?
@Html.TextBox("", Model.HasValue ? Model.Value.ToString("dd/MM/yyyy") : DateTime.Today.ToString("dd/MM/yyyy"), new { @class = "date" })

我有一个使用以下代码注册的jquery日期选择器:

$(document).ready(function () {
    $('.date').datepicker({
        changeMonth: true,
        changeYear: true,
        dateFormat: "dd/mm/yy"
    });
});

我有以下观点:

<div class="editor-field">
      @Html.EditorFor(model => model.DataNascimento)
      @Html.ValidationMessageFor(model => model.DataNascimento)
</div>

我已经检查过ContosoUniversity教程,但它恰好。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

解决此问题的更好方法之一就是编写自己的 ModelBinder 来处理本地化,详细了解here

属性DisplayFormat仅指定在使用@Html.EditorFor BornDate 字段的显示方式(并在显示时进行格式化)。