ASP.NET Web窗体页中的类属性(?)
本文关键字:属性 NET Web 窗体 ASP | 更新日期: 2023-09-27 18:10:02
我在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"answers"RequiredFieldValidator Display"属性下的歪歪扭扭。第一个警告是:
验证(ASP.Net(:特性"RequiredFieldValidator Text"不是元素"BoundFieldWithTextChangedEvent"的有效特性。
其他警告针对"RequiredFieldValidator-"属性的其余部分。
我需要做什么自定义控件代码才能使这些属性在Visual Studio 2013中正常运行?
编辑:多亏了下面Alex Lebedev的帮助,我的问题得到了解决。
我需要做两件事:
- 将
[PersistenceMode(PersistenceMode.InnerProperty)]
添加到我的自定义控件中的公共验证器属性之上 - 在web表单页面上将验证器引用为我的自定义控件的内部元素
<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>