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"; }
}
}
}
我认为你需要使用CriticalError而不是FatalError。你可以试试吗? – Trayek
没有运气。我写了这篇文章,其中说,'FatalError'是防止保存的那个。 http://www.awareweb.com/awareblog/11-11-14-sitecore-custom-field – Qwerty