Пользовательский RegularExpressionAttribute отсутствует data-val-regex-pattern для проверки на стороне клиента

Я создал следующий пользовательский RegularExpressionAttribute

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)]
public class AlphaNumericAttribute: RegularExpressionAttribute, IClientValidatable
{
    public AlphaNumericAttribute()
      : base("^[-A-Za-z0-9]+$")
    {
    }

   public IEnumerable GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
   {
      yield return new ModelClientValidationRule { ErrorMessage =  FormatErrorMessage(metadata.GetDisplayName()), ValidationType = "alphanumeric" };
   }
}

Поле в ViewModel украшено моим атрибутом AlphaNumeric:

[AlphaNumeric(ErrorMessageResourceType = typeof(Resources), ErrorMessageResourceName = Resources.DriverLicenseNumber_RegexError_)]
public string DriverLicenseNumber { get; set; }

Поле строится в виде:

@using (Html.BeginForm("Index", "Application", FormMethod.Post, new { id = "applicationDataForm", autocomplete = "off" }))
{
    @Html.LabelFor(m => m.DriverLicenseNumber)
    @Html.ValidationMessageFor(m => m.DriverLicenseNumber)
    @Html.TextBoxFor(m => m.DriverLicenseNumber)
}

Это должно дать правильноеданные-" Атрибуты проверки моего входного тега HTML. Тем не менее, визуализированный тег выглядит следующим образом:


Заметно отсутствуютДанные-Val-регулярное выражение а такжеДанные-Val-регулярное выражение-паттерн атрибуты, которые должны быть представлены.

Я построил другие валидаторы с точно такой же структурой, и они работают правильно, как эта проверка SSN, которая обрабатывает замаскированные пространства для маскированного ввода с использованием маскирования jquery:}

public class SsnAttribute : RegularExpressionAttribute, IClientValidatable
{
  public SsnAttribute()
  : base("^([0-9]{3}–[0-9]{2}–[0-9]{4})|([ ]{3}–[ ]{2}–[ ]{4})|([0-9]{9,9})$")
{
}

public IEnumerable GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
  yield return new ModelClientValidationRule { ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()), ValidationType = "ssn" };
}

С приложением на ViewModel:

[Ssn(ErrorMessageResourceType = typeof(Resources), ErrorMessageResourceName = Resources.SocialSecurity_RegexError_)]
public new string SocialSecurityNumber { get; set; }

Поле строится в виде:

@using (Html.BeginForm("Index", "Application", FormMethod.Post, new { id = "applicationDataForm", autocomplete = "off" }))
{
    @Html.LabelFor(m => m.SocialSecurityNumber)
    @Html.ValidationMessageFor(m => m.SocialSecurityNumber)
    @Html.TextBoxFor(m => m.SocialSecurityNumber)
}

Этот атрибут проверки корректно отображает атрибуты data-val-regex и data-val-regex-pattern:






Я не могу понять, что мне не хватает с атрибутом AlphaNumeric, что он не отображает соответствующие атрибуты HTML.

Ответы на вопрос(2)

Ваш ответ на вопрос