【问题标题】:Class Attributes (?) in ASP.NET Web Form PageASP.NET Web 窗体页中的类属性 (?)
【发布时间】:2015-11-22 00:37:43
【问题描述】:

我在 C# 中创建了一个自定义的 BoundField 类。我已将 ASP.NET 验证器添加到 TextBox,并在编辑和插入模式下公开了 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”属性下看到曲线。第一个警告是:

验证 (ASP.Net):属性“RequiredFieldValidator-Text”不是 元素“BoundFieldWithTextChangedEvent”的有效属性。

其他警告针对“RequiredFieldValidator-”属性的其余部分。

我需要执行哪些自定义控制代码才能使这些属性在 Visual Studio 2013 中正常运行?

编辑:感谢下面 Alex Lebedev 的帮助,我的问题已经解决了。

我需要做两件事:

  1. 在我的自定义控件中的公共验证器属性上方添加[PersistenceMode(PersistenceMode.InnerProperty)]
  2. 将验证器引用为我在 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>

【问题讨论】:

  • 手头没有VS可以尝试,但我怀疑RequiredFieldValidator$Text之类的东西可能会起作用
  • 安德烈,谢谢你的建议;但如果我将RequiredFieldValidator-Text 更改为RequiredFieldValidator$Text,我会收到“意外令牌”错误。

标签: c# asp.net visual-studio-2013


【解决方案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>

【讨论】:

  • 哦!我们越来越近了!现在我明白了……Validation (XHTML5): Element 'requiredfieldvalidator' is not supported.
  • 已修复!在我的 RequiredFieldValidator 属性上方添加了 [PersistenceMode(PersistenceMode.InnerProperty)]。谢谢!
猜你喜欢
  • 2012-01-23
  • 2023-03-29
  • 2011-09-03
  • 1970-01-01
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多