У меня есть собственный класс валидатора для проверки типа поля General Link
. Он проверяет, что значение поля поля Description
не превышает 15 символов.
Но что, если поле Link того же или другого шаблона требует 20 символов.Как передать параметры пользовательскому валидатору в Sitecore
Есть ли способ, я могу передать целое число в качестве параметра. Если да, то как пройти & используйте его.
Кроме того, это можно сделать на уровне базового шаблона. (Так что я могу определить пределы для каждого такого поля)
namespace CustomValidators
{
// This validator ensures that the description attribute of a link is either empty or has length of 15 characters.
[Serializable]
public class LinkTextValidator : StandardValidator
{
public override string Name {get { return "Link text validator"; } }
public LinkTextValidator() { }
public LinkTextValidator(SerializationInfo info, StreamingContext context) : base(info, context) { }
protected override ValidatorResult Evaluate()
{
Field field = this.GetField();
if (field == null)
return ValidatorResult.Valid;
string fieldValue = this.ControlValidationValue;
if (string.IsNullOrEmpty(fieldValue) || string.Compare(fieldValue, "<link>", StringComparison.InvariantCulture) == 0)
return ValidatorResult.Valid;
XmlValue xmlValue = new XmlValue(fieldValue, "link");
string attribute = xmlValue.GetAttribute("text");
if (!string.IsNullOrEmpty(xmlValue.GetAttribute("text")) && Convert.ToString(xmlValue.GetAttribute("text")).Length > 15)
{
this.Text = this.GetText("Description field should have not more than 15 characters, in the link field \"{0}\".", field.DisplayName);
return this.GetFailedResult(ValidatorResult.FatalError);
}
else
{
return ValidatorResult.Valid;
}
}
protected override ValidatorResult GetMaxValidatorResult()
{
return this.GetFailedResult(ValidatorResult.FatalError);
}
}
}
Параметр передается на уровне «Правило». Если в моем проекте есть 6 типов полей Link, у каждого из которых есть другой предел, тогда у меня должно быть 6 разных правил. я прав? – Qwerty
Да, с этой опцией вы бы имели правило «Максимальная длина 20», а другая «Максимальная длина 10» –
Тогда, в моем случае, мне не нужны параметры, если мне нужно создавать правила для отдельных случаев. правильно? Я хотел знать, можем ли мы передавать параметр на уровне шаблона. Так что будет только один валидатор, но разные параметры. Надеюсь, вы поняли мою озабоченность. – Qwerty