我在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" />
此代码编译良好,验证在页面上正常工作;但我看到了#34; RequiredFieldValidator-Text&#34;和&#34; RequiredFieldValidator-Display&#34; Visual Studio 2013中的属性。第一个警告是:
验证(ASP.Net):属性&#39; RequiredFieldValidator-Text&#39;不是一个 元素的有效属性&#39; BoundFieldWithTextChangedEvent&#39;。
其他警告是针对&#34; RequiredFieldValidator的其余部分 - &#34;属性。
我需要执行自定义控件代码才能使这些属性在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>
&#13;
答案 0 :(得分:1)
<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>