我正在使用Kentico 12 MVC,并且正在使用page builder。
TextAreaComponent的限制为500个字符。我想增加特定属性的限制,或者删除该验证规则并创建自己的验证规则。这是因为我想将构建器用于长段组件。这是属性:
#stale-nonce=600
#channel-lifetime=600
我可以添加一个限制为300个字符的验证规则:
[EditingComponent(TextAreaComponent.IDENTIFIER, Order = 0, Label = "Paragraaf")]
public string Text { get; set; } = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam bibendum sapien a justo dignissim pellentesque. Praesent rutrum venenatis neque in fringilla. Fusce vitae massa iaculis, mattis nulla vel, lacinia ex. Mauris sed dui ut nunc accumsan accumsan efficitur vel lacus. Morbi varius, libero et semper laoreet, arcu libero cursus purus, in congue est arcu eget nunc. Proin mattis justo at pharetra scelerisque. Pellentesque tristique elit odio, a bibendum dui laoreet sit amet. Cras orci ex, semper eget ipsum eget, molestie egestas urna. Maecenas vitae neque at nulla congue dictum. Vestibulum eu justo aliquet, feugiat elit at, consectetur mauris. Maecenas in neque dapibus, lacinia est at, laoreet nibh. Sed semper feugiat risus eu ultrices. Sed sagittis ut dolor nec aliquet.";
这将导致超过300个字符的验证错误:[StringLength(300)]
。当我超过500个字符时,它不会显示超过300个字符的验证错误,但会显示500个字符的验证错误:The field Text must be a string with a maximum length of 300.
当我尝试将Maximum allowed length of the input text is 500.
更改为大于500时,表单构建器仍然会在500个字符以上显示相同的验证错误。设置StringLength
的操作方式相同。
我还尝试了扩展MaxLength
并实现自己的值设置器,但是我不知道如何使用该自定义组件而不是本地的Kentico组件。
如何增加验证规则来限制TextAreaComponent值的长度?
答案 0 :(得分:3)
您还可以使用EditingComponentProperty属性设置大小,例如:
[EditingComponentProperty("Size", 1000)]
[EditingComponent(TextAreaComponent.IDENTIFIER, Order = 0, Label = "Paragraaf")]
public string Text { get; set; }
答案 1 :(得分:0)
每当创建Kentico.Forms.Web.Mvc.TextAreaProperties的新实例时,都会将硬编码的Size值500传递给基类。
因此,在自定义TextAreaComponent实现中,您可以尝试通过继承的Properties对象覆盖默认的Size值。
找到一个适当的位置来覆盖并尝试:
this.Properties.Size = 1000; //或任何适合您的
此处描述了注册自定义表单组件的过程:https://docs.kentico.com/k12/developing-websites/form-builder-development/developing-custom-form-components
答案 2 :(得分:0)
输入超过500个字符时的验证问题已在12.0.26中修复