启用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
注释。有人能帮我处理一下吗?
[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; }