我有一个带有UserControl
的内容页面。当UserControl
添加到页面时,所有按钮,包括主页面中的按钮,都将停止工作。如果我卸下UserControl
,按钮将重新开始工作。不工作,我的意思是,如果你点击它们,什么都不会发生,也不会回发。有些按钮仍然有效,例如对列进行排序的GridView
标题标签。这些导致回发,但没有其他原因。
UserControl
中的唯一元素是包含html label
的fieldset
、包含RequiredFieldValidator
和TextBox
。
此解决方案提到通过在Page_Load
中包含!isPostBack
检查来解决类似的问题,但包含了什么?我的UserControl
Page_Load
事件当前为空。
更新
用户控制.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="StaffEditFields.ascx.cs"
Inherits="StaffEditFields" %>
<fieldset>
<label>
Username
<asp:RequiredFieldValidator ID="rfdUser" runat="server" Display="Static"
ControlToValidate="txtUser" />
<br />
<asp:TextBox ID="txtUser" runat="server" CssClass="fvBox" Text='<%# Bind("Username") %>' />
</label>
</fieldset>
更新2
删除了fieldset
,没有任何变化,但当我删除RequiredFieldValidator
时,页面开始正常工作。现在我需要问一下如何保持RequiredFieldValidator
并使UserControl
正常工作?
我想明白了。问题是RequiredFieldValidator
没有设置为对任何特定按钮进行验证,因此它将尝试在页面上的任何按钮上进行验证。我也没有将任何按钮设置为CausesValidation="true"
。
解决方案是为RequiredFieldValidator
设置验证组,并将UserControl
内部或外部的按钮设置为CausesValidation="true"
和ValidationGroup=[group]
。