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

如何验证Sitecore单行文本字段是否包含字符限制,sitecore,sitecore6,Sitecore,Sitecore6,我想要单行文本字段的最大长度。我知道可以使用自定义字段,但为了保持连续性,如果可能的话,我宁愿避免使用自定义字段。您可以使用验证规则 在模板下,浏览到字段定义项,您可以在验证规则部分中选择验证器。此处有一个示例规则:/sitecore/system/Settings/Validation Rules/Field Rules/sample/Max Length 40,确保最大长度为40个字符。当然,您可以复制和更改此规则。您可以添加自定义字段验证程序: 使用Sitecore.Data.Valida

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

您可以使用验证规则


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

您可以添加自定义字段验证程序:

使用Sitecore.Data.Validators;
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
//DLL:“MySitecore.DLL”
命名空间MySitecore.Data.Validators.FieldValidators
{
公共类StringLengthValidator:StandardValidator
{
public const Int32 MaxStringLength=40;//更改我
受保护的重写验证器结果求值()
{
如果(!String.IsNullOrEmpty(base.ControlValidationValue))
{
if(base.ControlValidationValue.Length>MaxStringLength)
{
base.Text=base.GetText(“字段“{0}”超过了最大字符串长度{1}”,新字符串[]{
base.GetFieldDisplayName(),
MaxStringLength
});
返回base.GetFailedResult(ValidatorResult.Error);
}
}
返回验证结果。有效;
}
受保护的重写ValidatorResult GetMaxValidatorResult()
{
返回base.GetFailedResult(ValidatorResult.Error);
}
公共重写字符串名
{
获取{return String.Format(“必须是{0}个或更少的字符”,MaxStringLength);}
}
}
}
然后,添加与该验证器对应的项目:

  • 在内容编辑器中,导航到
    /sitecore/system/Settings/Validation Rules/Field Rules/Text
  • 添加新项(从
    /sitecore/templates/System/Validation/ValidationRule
    继承)
  • 填充值
    • 标题是要显示的简短标题
    • Description是规则名称后显示的帮助器文本
    • 类型是对新验证器的完全限定引用。以上述为例,这将是:
      MySitecore.Data.Validators.FieldValidators.StringLengthValidator,MySitecore

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

当我使用它时,它会抛出验证失败,尽管它明显在字符限制内?样本失败。我只是用样本规则检查了一下-在我的环境中,通过40个字符(或更少),超过40个失败。您已将验证规则添加到哪些字段?我尝试了以下多列表字段:快速操作栏和验证栏。在您的示例规则中,类型字段中是否有以下内容:Sitecore.Data.Validators.FieldValidators.MaxLengthFieldValidator,Sitecore.Kernel,参数字段中是否有以下内容:MaxLength=40?是的,这正是它所说的,我正试图将其应用于存储为单行文本的项的描述字段。我真的输入了10个字符,弹出了一个“最大长度为40”的弹出窗口,不允许保存。我在保存时也没有遇到任何问题-您确定除了示例规则之外,没有其他验证正在进行吗?您能帮我再次检查一下,您是否在模板的字段定义上设置了这些规则,而不是在其中的“验证规则”部分中的项本身上设置了这些规则?即,将其添加到/sitecore/templates/User-Defined/TestTemplate/Section/Test字段。一个快速确定它是否位于正确位置的方法是不显示标准字段。它应用于模板中的字段“Decription”,因此我打开了树并为字段选择了“item”,路径如yo所建议的。没有任何其他验证正在运行。