【问题标题】:Change the ControlToValidate of RequiredFieldValidator dynamically动态改变RequiredFieldValidator的ControlToValidate
【发布时间】:2012-01-31 19:19:13
【问题描述】:

我在 <td> 中有一个文本框和下拉列表,根据特定条件,我必须隐藏文本框并显示下拉列表。如果下拉菜单可见,是否可以使用相同的必填字段验证器。这可能吗?

<td>
    <asp:TextBox ID="txtLimit" runat="server" />
    <asp:DropDownList ID="ddlCurLiabiltyLimits" runat="server" CssClass="TextNormal" OnSelectedIndexChanged="ddlCurLiabiltyLimits_SelectedIndexChanged">  
    </asp:DropDownList>
    <asp:RequiredFieldValidator runat="server" ControlToValidate="txtLimit" ErrorMessage="Answer is required." ClientIDMode="Static" />
</td>

在我的代码后面:

RequiredFieldValidator1.ControlToValidate = ddlCurLiabiltyLimits.ID ;

但这似乎不起作用。

【问题讨论】:

  • 什么时候替换CintrolToValidate
  • 页面加载后,在验证按钮的点击事件中。
  • “页面加载后”是什么意思?什么验证按钮?
  • 当我遇到这种模式时,我总是为我可能显示的每组控件使用一组单独的验证器控件。特别是考虑到您正在验证两种不同类型的控件,如果每个控件都有一个验证器,阅读起来可能会更清晰。但是,如果做得正确,您的建议是可能的。

标签: c# asp.net .net validation requiredfieldvalidator


【解决方案1】:

可能会导致您出现问题的一件事是,在 DropDownList 上使用 RequiredFieldValidator 时,您需要指定 RequiredFieldValidator.InitialValue 属性来指示 DropDownList 中“第一个”项的值。也许这就是你的问题所在?

【讨论】:

    【解决方案2】:

    我的猜测是,您可能在页面生命周期中将 ID 分配给 ControlToValidate 属性为时已晚。是否可以在页面的 OnInit 事件期间分配它?

    为 DropDownList 使用第二个RequiredFieldValidator 可能更容易。

    【讨论】:

    • 我测试了这个场景并在 Page.Load 中设置 RequiredFieldValidator.ControlToValidate 工作正常。
    • @pseudocoder - 啊,很高兴知道。不过,听起来 OP 是在 Button 的 Click 事件中执行此操作的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多