防止在Sitecore中保存无效字段值

时间:2016-03-16 08:33:41

标签: c# asp.net sitecore sitecore8

我有一个自定义验证器类,它检查以下内容:

  

文本字段的值应为5个字符      该   前两个字符。应该是数字      最后3个字符。应该   字母。

设置模板的标准值(例如:12a)时,指示灯显示红色和相应的消息。但在按下Ctrl + S后,它会显示一个对话框,要求即使出现错误也要保存。单击“确定”后,会出现类似的对话框。单击“确定”,将12a保存为该字段的标准值。当我刷新内容编辑器时,值为12a。

这是正常的Sitecore行为吗?如果它无效,我期待该值不应该被保存。

namespace CustomValidators
{
 [Serializable]
 public class testValidator : StandardValidator
 {
    private readonly Regex numbersRegex = new Regex(@"^\d+$");
    private readonly Regex lettersRegexnew = new Regex(@"^[A-Za-z]+$");

    protected override ValidatorResult Evaluate()
    {
        string value = base.GetControlValidationValue();

        if (!string.IsNullOrEmpty(value) && value.Length == 5)
        {
            string firstPart = value.Substring(0, 2);
            string secondPart = value.Substring(3, 3);

            if (numbersRegex.IsMatch(firstPart) && lettersRegexnew.IsMatch(secondPart))
            {
                return ValidatorResult.Valid;
            }
        }

        base.Text = "invalid value";

        return base.GetFailedResult(ValidatorResult.FatalError);
    }

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

    public override string Name
    {
        get { return "testValidator"; }
    }
 }
}

1 个答案:

答案 0 :(得分:2)

只有某些角色的人,甚至可以选择强制保存。管理员和我认为" Sitecore开发人员"作用。

因此,您可以选择强制进行保存。这是正常行为。

您的常规编辑用户将无法保存。