自定义验证属性不称为ASP.NET MVC
大家好,我已经创建了自定义验证属性并将其分配给类级验证。 不幸的是,它没有被调用。 我想尽一切办法认为它可以解决问题。 然而,它花了我几个小时,我无法找到该属性不被验证机制调用。
为了说明你我把下面的代码。
属性
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)] public sealed class BooleanDependencyAttribute : ValidationAttribute { private const string _defaultErrorMessage = "กรุณากรอก{0}"; private readonly object _typeId = new object(); public string DependencyPropertyName { get; private set; } public string DependentPropertyName { get; private set; } public BooleanDependencyAttribute(string dependencyPropertyName, string dependentPropertyName) : base(_defaultErrorMessage) { DependencyPropertyName = dependencyPropertyName; DependentPropertyName = dependentPropertyName; } public override object TypeId { get { return _typeId; } } public override string FormatErrorMessage(string name) { return String.Format(CultureInfo.CurrentUICulture, ErrorMessageString,name); } public override bool IsValid(object value) { PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(value); bool dependencyValue = (bool) properties.Find(DependencyPropertyName, true /* ignoreCase */).GetValue(value); object dependentValue = properties.Find(DependentPropertyName, true /* ignoreCase */).GetValue(value); if (dependencyValue) { return true; } else { if (dependentValue == null) { return false; } else { return true; } } } }
视图模型
[BooleanDependency("ReleaseNow","ReleaseDate",ErrorMessage="Please enter release date")] public class ContentCreate { public string Title { get; set; } public DateTime? ReleaseDate { get; set; } public string Details { get; set; } public string Abstract { get; set; } public string Tags { get; set; } public bool ReleaseNow { get; set; } }
请你能帮我解决这个问题。
我找到了解决方案。 事实上,在所有属性级别验证有效之后,都会调用类级别验证。 因此,我需要完成其他必需的属性,然后BooleanDependencyAttribute将调用和有效的值。
感谢您的查看,请编辑标题和标签。
链接地址: http://www.djcxy.com/p/9691.html