我的.aspx:
<asp:LoginView runat="server">
<RoleGroups>
<asp:RoleGroup Roles="admin">
<ContentTemplate>
<asp:TextBox ID="TextBox" runat="server"></asp:TextBox>
<asp:Button ID="Button" runat="server" Text="Submit" OnClick="Button_Click" />
</ContentTemplate>
</asp:RoleGroup>
</RoleGroups>
</asp:LoginView>
我的代码隐藏
public partial class WebForm3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button_Click(object sender, EventArgs e)
{
string Mystring = String.Format("{0}", /*I want to put Textbox.text here*/ );
}
}
问题是我在当前上下文中没有定义“文本框”。我摆弄了一下,发现删除loginview会恢复我想要的功能。那么为什么loginview会破坏我在同一视图中引用控件的能力?
答案 0 :(得分:2)
C#区分大小写。而不是名称文本框(b是小写)使用TextBox。另外,我建议您将控件的ID更改为更有意义的内容。不要将TextBox的ID设置为“TextBox”
除了您的评论之外,您似乎还在LoginView中使用了TextBox。我可以访问此控件的唯一方法是
Control container = new Control();
LoginView1.RoleGroups[0].ContentTemplate.InstantiateIn(container);
foreach (Control control in container.Controls)
{
if (control.ID == "txtName")
{
//Phew. Got your control
}
}
注意:我已将LoginView ID设置为LoginView1,将TextBox ID设置为txtName
答案 1 :(得分:1)
试试this.TextBox
!那应该解决Case Sensitivity的事情!另外......糟糕的变量命名...根据经验,不要将变量命名为类的名称......