如何验证Sitecore单行文本字段以包含字符限制

时间:2014-09-22 08:24:57

标签: sitecore sitecore6

我想要单行文本字段的最大长度。我知道可以使用自定义字段,但如果可能的话,我宁愿避免使用自定义字段。

2 个答案:

答案 0 :(得分:2)

您可以使用验证规则。

在您的模板下,浏览到您的字段定义项,然后您可以在Validation Rules部分中选择验证器。这里有一个示例规则:/sitecore/system/Settings/Validation Rules/Field Rules/Sample/Max Length 40,它确保您的最大长度为40个字符。您当然可以复制并更改此规则。

答案 1 :(得分: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
  • 填充值
    • 标题是显示的简称
    • 说明是规则名称
    • 后显示的帮助文本
    • Type是对新验证程序的完全限定引用。以上述为例,这将是:
      MySitecore.Data.Validators.FieldValidators.StringLengthValidator, MySitecore

最后,转到您的模板,找到要添加验证的字段并应用新验证程序。