我验证了没有干净的方法来做到这一点(通过ILSpy),请参阅下面的例子,以稍微肮脏的方式。基本上我们使用反射来获得CurrentView
属性,这是一个内部属性,然后我们将PasswordReset控件的当前视图设置为以下三种状态之一:用户名(0),问题(1)或成功(2)。
设计师
<form id="form1" runat="server">
<div>
<asp:PasswordRecovery ID="pwr" runat="server"></asp:PasswordRecovery>
</div>
<span>Set Recover State: </span>
<asp:RadioButtonList ID="rblChangeState" runat="server" AutoPostBack="True"
onselectedindexchanged="rblChangeState_SelectedIndexChanged">
<asp:ListItem Text="Username" Value="0" />
<asp:ListItem Text="Question" Value="1" />
<asp:ListItem Text="Success" Value="2" />
</asp:RadioButtonList>
</form>
代码隐藏
protected void rblChangeState_SelectedIndexChanged(object sender, EventArgs e)
{
Type t = pwr.GetType();
PropertyInfo viewSetter = t.GetProperty("CurrentView", BindingFlags.Default | BindingFlags.NonPublic | BindingFlags.Instance);
viewSetter.SetValue(pwr, Convert.ToInt32(rblChangeState.SelectedValue), null);
}
所以定义事件点击按钮。 – 2012-07-10 19:00:13
谢谢,但这没有帮助。我在问如何重置控制状态,而不是如何处理按钮点击。 – 2012-07-10 19:20:26