我需要将RequiredFieldValidator 和RegularExpressionValidator 添加到动态生成的tablecell 中的动态创建的文本框中,该文本框位于从Master 创建的页面的内容区域中的Web 用户控件内。
正如您可能猜到的那样,问题在于尝试动态设置 ControlToValidate 属性以查看我动态创建的文本框。
经过一番研究,现在的代码:
- 创建一个面板(我听说 ControlToValidate 和 Validator 必须在同一个容器中)。这最初是一个占位符,但正在尝试下面列出的建议。
- 创建文本框并设置其 ID。
- 将文本框添加到面板。
- 创建RequiredFieldValidator。
设置 ControlToValidate 的 ID。我尝试使用的值:
- 控件ID
- 控件的 ClientID
- 以服务器附加到 Web 用户控件的子控件的添加文本为前缀的控件 ID
- 客户端 ID 以相同方式修改
- 控件的名称(有机会)
- 以服务器添加到控件名称的文本为前缀的控件名称
- 使用定制的递归 FindControl 方法尝试将新的 Control 对象转换为 Textbox,然后使用其 ID 和 ClientID
- 控件的 UniqueID
- 与上面详述的前缀相同的修改
- 将验证器添加到面板。
- 将面板添加到表格单元中。
不用说,我仍然无法说服验证器“看到”它应该验证的控件,而且我完全没有解决问题的新方法。
编辑:进一步的侦探工作使我发现在 page_load 事件完成之前页面没有问题。构建页面的代码执行完毕后,服务器似乎出现了问题。我开始怀疑我是否真的将控件添加到命名容器中太晚了,而不是太早了。
有什么建议么?