我在C#中创建了一个自定义的BoundField类.我在TextBox中添加了ASP.NET验证器,并在编辑和插入模式下公开了TextBox OnTextChanged事件.我遇到了验证者的烦恼.
我在这个例子中公开公开了验证器:
private requiredFieldValidator _requiredFieldValidator; public requiredFieldValidator requiredFieldValidator { get { return _requiredFieldValidator ?? (_requiredFieldValidator = new requiredFieldValidator()); } }
我已经使用这种方法来避免在控件本身中设置无数的自定义公共属性.我现在可以做到这一点……
<cc1:BoundFieldWithTextChangedEvent datafield="size2" HeaderText="Width" SortExpression="size2" ItemStyle-CssClass="numeric" OnTextChanged="size2_OnTextChanged" AutopostBack="True" requiredFieldValidator-Text="!" requiredFieldValidator-display="Dynamic" />
此代码编译良好,验证在页面上正常工作;但我在Visual Studio 2013中的“requiredFieldValidator-Text”和“requiredFieldValidator-display”属性下看到了波形.第一个警告是:
Validation (ASP.Net): Attribute ‘requiredFieldValidator-Text’ is not a
valid attribute of element ‘BoundFieldWithTextChangedEvent’.
其他警告是针对“requiredFieldValidator-”属性的其余部分.
使用Visual Studio 2013,我需要执行哪些自定义控件代码才能使这些属性正常运行?
编辑:感谢Alex Lebedev的帮助,我的问题已经解决了.
我需要做两件事:
>在我的自定义控件中的公共验证器属性上方添加[PersistenceMode(PersistenceMode.InnerProperty)].
>在网络表单页面上引用验证器作为我的自定义控件的内部元素.
<cc1:BoundFieldWithTextChangedEvent datafield="size2" HeaderText="Width" SortExpression="size2" ItemStyle-CssClass="numeric" OnTextChanged="size2_OnTextChanged" AutopostBack="True" ItemStyle-Wrap="false" ValidationGroup="UpdateItem"> <requiredFieldValidator Text="!" ErrorMessage="You must specify a width." display="Dynamic" SetFocusOnError="true" EnableClientScript="true"></requiredFieldValidator> <CompareValidator Text="*" ErrorMessage="Width must be greater than zero." Operator="GreaterThan" ValuetoCompare="0" Type="Double" display="Dynamic" SetFocusOnError="true" EnableClientScript="true"></CompareValidator> </cc1:BoundFieldWithTextChangedEvent>
解决方法
<cc1:BoundFieldWithTextChangedEvent datafield="size2" HeaderText="Width" SortExpression="size2" ItemStyle-CssClass="numeric" OnTextChanged="size2_OnTextChanged" AutopostBack="True" requiredFieldValidator-Text="!" requiredFieldValidator-display="Dynamic" />
替换为:
<cc1:BoundFieldWithTextChangedEvent datafield="size2" HeaderText="Width" SortExpression="size2" ItemStyle-CssClass="numeric" OnTextChanged="size2_OnTextChanged" AutopostBack="True"> <requiredFieldValidator Text="!" display="Dynamic"/> </cc1:BoundFieldWithTextChangedEvent>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。