Я создал настраиваемую проверку модели ASP.Net MVC следующим образом:
internal class LocalizedRequiredAttribute : RequiredAttribute, IClientValidatable
{
public List<string> DependentProperties { get; private set; }
public List<string> DependentValues { get; private set; }
public string Props { get; private set; }
public string Vals { get; private set; }
public string RequiredFieldValue { get; private set; }
public LocalizedRequiredAttribute(string resourceId = "")
{
if (string.IsNullOrEmpty(resourceId))
ErrorMessage = ResourcesHelper.GetMessageFromResource("RequiredValidationErrorMessage");
else
ErrorMessage = ResourcesHelper.GetMessageFromResource(resourceId);
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
string msg = FormatErrorMessage(metadata.GetDisplayName());
yield return new ModelClientValidationRequiredRule(msg); //Exception
}
}
internal class LocalizedNumericRegularExpressionAttribute : RegularExpressionAttribute, IClientValidatable
{
public LocalizedNumericRegularExpressionAttribute(string resourceId = "") : base(@"^\d+$")
{
if (string.IsNullOrEmpty(resourceId))
ErrorMessage = ResourcesHelper.GetMessageFromResource("NumberRequiredValidationErrorMessage");
else
ErrorMessage = ResourcesHelper.GetMessageFromResource(resourceId);
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
string msg = FormatErrorMessage(metadata.GetDisplayName());
yield return new ModelClientValidationRequiredRule(msg); //Exception
}
}
вот моя модель:
public class MyModel
{
[LocalizedRequired]
[LocalizedNumericRegularExpression]
public int Emp_No { get; set; }
}
Всякий раз, когда я перехожу к форме с помощью вышеуказанной модели, возникает следующее исключение.
Validation type names in unobtrusive client validation rules must be unique. The following validation type was seen more than once: required
приведенные выше коды в порядке, если я удалю IClientValidatable
, но проверка клиента не работает.
Что не так с моим кодом?