0

使用 MVC5 和 .NET 4.5

我想制作一个既可以使用编辑器模板又可以用作 ValidationAttribute 的 DataTypeAttribute。

据我了解, DataTypeAttribute 继承自 ValidationAttribute 所以我认为这并不困难。

但是,我无法对其进行验证。

这是我的属性:

[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class XXXAttribute : DataTypeAttribute
{
    public XXXAttribute() : base("XXX") { }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        // validation code
    }

}

这是我的 ViewModel 中的属性:

    [XXX]

    [Display(Name = "XXX")]
    public string XXX { get; set; }

我的 XXXAttribute 的 IsValid 方法中的调试器显示它从未在提交时被检查过。

有人可以向我指出我做错了什么吗?谢谢你。

4

1 回答 1

0

编辑器模板适用于 DataTypes 命名约定。因此,您将需要一个 string.cshtml(不推荐),或者您可以使用 EditorFor 覆盖,明确告诉它使用什么模板。

@Html.EditorFor(model => model.XXX, "XXX")

请参阅文档http://msdn.microsoft.com/en-us/library/ee407414(v=vs.118).aspx

于 2014-12-16T20:50:56.913 回答