2016-03-16 51 views
0

无效字段值I有一个定制的验证类,检查以下内容:防止保存在Sitecore的

文本字段的值应当具有长度为5个字符。
前2个字符。应该是数字。
最后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

我认为你需要使用CriticalError而不是FatalError。你可以试试吗? – Trayek

+0

没有运气。我写了这篇文章,其中说,'FatalError'是防止保存的那个。 http://www.awareweb.com/awareblog/11-11-14-sitecore-custom-field – Qwerty

回答

2

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

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

您的普通编辑器用户将无法保存。