Don't miss out Virtual Happy Hour this Friday (April 26).

Try our conversational search powered by Generative AI!

Can we limit the number of options user can select in checkboxes created by SelectMany attribute in edit mode?

Vote:
 

Can we limit the number of options user can select in checkboxes created by SelectMany attribute in edit mode? I have created the checkboxes as explained in https://world.episerver.com/documentation/developer-guides/CMS/Content/Properties/built-in-property-types/Single-or-multiple-list-options/.

#201975
Mar 11, 2019 8:49
Vote:
 

Hi Bilash

I have not tried it but you might be able to use an IValidator<T>implementation on the form element for this: https://world.episerver.com/documentation/developer-guides/CMS/Content/Validation/ 

David

#201982
Mar 11, 2019 12:22
Vote:
 

Hi,

I have tried the IValidate<T> and it will not work as your requirement for a property validation. What will happen is, publish button will not be visible even you update your property for a valid value. Error will keep showing. I think you should use ValidationAttribute. I can share you a code example if use need to understand the implementation of ValidationAttribute.

/Praful

#202020
Edited, Mar 12, 2019 9:58
Vote:
 

Hi,

I have created the [MaxElements] attribute. You can try that.

Property on the block

  [Display(
            Name = "Cards",
            Description = "Cards for block",
            GroupName = CmsGroupDefinitions.Content,
            Order = 300)]
        [Required]
        [MaxElements(4)]
        public virtual IList<CardItem> Cards { get; set; }

Then create a class

namespace ABC.Application.Foundation.Attributes
{
    using System;
    using System.ComponentModel.DataAnnotations;
    using System.Web.ModelBinding;
    using EPiServer.Core;
    using EPiServer.SpecializedProperties;

    [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
    public class MaxElementsAttribute : ValidationAttribute, IMetadataAware
    {
        public MaxElementsAttribute(int maxElementsInList)
        {
            this.MaxCount = maxElementsInList;
        }

        public int MaxCount { get; set; }

        public void OnMetadataCreated(ModelMetadata metadata)
        {
        }

        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if (value == null)
            {
                return null;
            }

            if (value is LinkItemCollection)
            {
                if ((value as LinkItemCollection).Count > MaxCount)
                {
                    return new ValidationResult("Too many Link Items in the collection. Maximum is " + MaxCount);
                }
            }
            else if (value is ContentArea)
            {
                if ((value as ContentArea).Count > MaxCount)
                {
                    return new ValidationResult("Too many content items in content area. Maximum is " + MaxCount);
                }
            }

            return null;
        }
    }
}

Thanks

Ravindra

#204578
Jun 10, 2019 10:56
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.