2014-09-22 3 views
0

Я хочу максимальную длину для текстового поля в одной строке. Я знаю, что можно использовать пользовательские поля, но я предпочел бы избежать этого, если возможно, только для непрерывности.Как проверить однострочное текстовое поле Sitecore для включения символьного ограничения

ответ

2

Вы можете использовать правила валидации.

Под шаблоном перейдите к элементу определения поля, и вы можете выбрать валидаторы в разделе Validation Rules. Здесь находится правило выборки: /sitecore/system/Settings/Validation Rules/Field Rules/Sample/Max Length 40, которое гарантирует максимальную длину в 40 символов. Вы, конечно, могли бы дублировать и изменять это правило.

+0

Когда я использую это, он отказывает в валидации, несмотря на то, что он значительно превышает лимит символов? Он не работает с образцом. –

+0

Я только что проверил его с правилом выборки - в моей среде проходит 40 символов (и меньше),> 40 терпит неудачу. В какие поля вы добавили правило проверки? Я пробовал следующие многолистные поля: панель быстрого действия и панель проверки. В правиле выборки, у него есть следующие данные в поле типа: Sitecore.Data.Validators.FieldValidators.MaxLengthFieldValidator, Sitecore.Kernel и в поле Параметры: MaxLength = 40? – Trayek

+0

Да, это именно то, что он говорит, я пытаюсь применить его к полю описания для элемента, хранящегося в виде однострочного текста. Я буквально вставляю 10 символов, и появляется всплывающее окно «Максимальная длина 40» и не позволяет ему сохранять. –

0

добавлять пользовательские поля валидатор:

using Sitecore.Data.Validators; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

// DLL: "MySitecore.dll" 

namespace MySitecore.Data.Validators.FieldValidators 
{ 
    public class StringLengthValidator : StandardValidator 
    { 
     public const Int32 MaxStringLength = 40; // Change me 

     protected override ValidatorResult Evaluate() 
     { 
      if (!String.IsNullOrEmpty(base.ControlValidationValue)) 
      { 
       if (base.ControlValidationValue.Length > MaxStringLength) 
       { 
        base.Text = base.GetText("The field '{0}' exceeds the maximum string length of {1}", new String[]{ 
         base.GetFieldDisplayName(), 
         MaxStringLength 
        }); 
        return base.GetFailedResult(ValidatorResult.Error); 
       } 
      } 
      return ValidatorResult.Valid; 
     } 

     protected override ValidatorResult GetMaxValidatorResult() 
     { 
      return base.GetFailedResult(ValidatorResult.Error); 
     } 

     public override String Name 
     { 
      get { return String.Format("Must be {0} or fewer characters", MaxStringLength); } 
     } 
    } 
} 

Затем добавьте элемент, который соответствует этой валидатора:

  • В редакторе содержимого, перейдите к /sitecore/system/Settings/Validation Rules/Field Rules/Text
  • Добавить новый элемент (наследуя от /sitecore/templates/System/Validation/ValidationRule)
  • Задать значения
    • Название - краткое название, чтобы показать
    • Описание - это вспомогательный текст, отображаемый после имени правила
    • Тип - это полностью квалифицированная ссылка на ваш новый валидатор. Используя выше в качестве примера, это было бы:
      MySitecore.Data.Validators.FieldValidators.StringLengthValidator, MySitecore

Наконец, перейдите в шаблон, найдите поле, которое вы хотите добавить валидацию и применить новый валидатор.

Смежные вопросы