Клиентская сторона Условная проверка Атрибут RequiredIf

0

У меня есть asp.net MVC 4 с двумя переключателями. При загрузке страницы секция просмотра скрыта с помощью css. на самом экране, когда пользователь выбирает одну радиокнопку, когда секция скрыта, а другая отображается, а при нажатии другой радиокнопки отображается другая секция. Я хочу выполнить условную проверку, поэтому проверяется флажок. Я создал атрибут RequriredIf, но он работает только на стороне сервера. код:

 public class RequiredIfAttribute : ValidationAttribute
    {
        private String PropertyName { get; set; }
        private String ErrorMessage { get; set; }
        private Object DesiredValue { get; set; }

        public RequiredIfAttribute(String propertyName, Object desiredvalue, String errormessage)
        {
            this.PropertyName = propertyName;
            this.DesiredValue = desiredvalue;
            this.ErrorMessage = errormessage;
        }

        protected override ValidationResult IsValid(object value, ValidationContext context)
        {
            Object instance = context.ObjectInstance;
            Type type = instance.GetType();
            Object proprtyvalue = type.GetProperty(PropertyName).GetValue(instance, null);
            if (proprtyvalue.ToString() == DesiredValue.ToString() && value == null)
            {
                return new ValidationResult(ErrorMessage);
            }
            return ValidationResult.Success;
        }
    }

и вот как я использую этот атрибут:

 [RequiredIf("LocationType", LocationTypeEnum.BuildingOffice, "Please enter building number")]
        public string BuildingNumberName
        {
            get { return _BuildingNumberName; }
            set { _BuildingNumberName = value; }
        }

         [RequiredIf("LocationType", LocationTypeEnum.BuildingOffice, "Please enter floor number")]
        private string _Floor = string.Empty;

        public string Floor
        {
            get { return _Floor; }
            set { _Floor = value; }
        }

        private string _ApartmentOfficeNumber = string.Empty;

         [RequiredIf("LocationType", LocationTypeEnum.BuildingOffice, "Please enter appartment/office number")]
        public string ApartmentOfficeNumber
        {
            get { return _ApartmentOfficeNumber; }
            set { _ApartmentOfficeNumber = value; }
        }

а также

private string _HouseNumber = string.Empty;

        [RequiredIf("LocationType", LocationTypeEnum.VillaHouse, "Please enter house number")]
        public string HouseNumber
        {
            get { return _HouseNumber; }
            set { _HouseNumber = value; }
        }

Это имеет небольшой недостаток:

1) он возвращает сообщение, поэтому пользователю приходится ждать возврата и исправления ошибок. 2) после обратной передачи раздел по умолчанию скрыт (с использованием css).

Я хочу сделать это с помощью клиентской стороны. Что мне нужно сделать?

Теги:
asp.net-mvc
asp.net-mvc-4

1 ответ

0

Я считаю, что вам нужно добавить в свой файл web.config, чтобы включить проверку на стороне клиента.

<configuration>
  <appSettings>  
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
</configuration>
  • 0
    это будет работать для настраиваемого атрибута проверки?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню