启用ViewModel中的显示格式注释

本文关键字:显示格式 注释 ViewModel 启用 | 更新日期: 2023-09-27 18:03:09

我正在尝试使用MVC 5和EF 6代码第一方法开发应用程序。

我是软件开发的新手。

我想添加这个数据注释:

 [DataType(DataType.Date)]
 [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]

到一个名为Birthdate的属性

举例说明:

public class StudentRegisterViewModel
    {
        public string LastName { get; set; }
        public string FirstMidName { get; set; }
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
        public DateTime EnrollmentDate { get; set; }
    }

这里的问题是EnrollmentDate字段不识别DisplayFormat注释。有人能帮我处理一下吗?

启用ViewModel中的显示格式注释

[DisplayFormat]属性仅供DisplayFor和EditorFor使用。而不是通过其他帮助器,如TextBoxFor。

要进一步格式化它,你可以创建一个css类,并使用jQuery应用它:

$("EnrollmentDate").addClass("class-name")

要应用[DisplayFormat]中指定的格式,您需要通过Html.DisplayFor()访问该值。例如,在视图中:

 @Html.DisplayFor(vm => vm.EnrollmentDate)

编写自己的ValidationAttribute。要做到这一点,您可以使用自己的逻辑覆盖IsValid()方法。

如果您愿意,可以添加更多验证:

public class MyAmazingValidationClass : ValidationAttribute
{
    protected override bool IsValid(object value)
    {
        DateTime date;
        bool parsed = DateTime.TryParse((string)value, out date);
        //or maybe : 
        bool parsed = DateTime.ParseExact((string)value),"dd/MM/yyyy")
        if(!parsed)
            return false;
        return true;
     }
}

那就去装饰你的课堂吧:

public string FirstMidName { get; set; }
[DataType(DataType.Date)]
[MyAmazingValidationClass(ErrorMessage="You made a big mistake right now!")]
public DateTime EnrollmentDate { get; set; }