我有一个自定义验证器类,它检查以下内容:
文本字段的值应为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"; }
}
}
}
答案 0 :(得分:2)
只有某些角色的人,甚至可以选择强制保存。管理员和我认为" Sitecore开发人员"作用。
因此,您可以选择强制进行保存。这是正常行为。
您的常规编辑用户将无法保存。