C# .aspx中的文本框在.cs中不可访问
我试了很多,花了一整天的时间在这上面,但都是徒劳的。我发现了许多与我的问题相关的问题,但没有人解决我的问题。我在Login.aspx中有一个ID=“UserName”的文本框,并试图在Login.aspx.cs中获取其值,但它给出了一个错误,即“当前上下文中不存在用户名”。这是我的Login.aspx(由VS 2012默认创建)C# .aspx中的文本框在.cs中不可访问,c#,asp.net,code-behind,C#,Asp.net,Code Behind,我试了很多,花了一整天的时间在这上面,但都是徒劳的。我发现了许多与我的问题相关的问题,但没有人解决我的问题。我在Login.aspx中有一个ID=“UserName”的文本框,并试图在Login.aspx.cs中获取其值,但它给出了一个错误,即“当前上下文中不存在用户名”。这是我的Login.aspx(由VS 2012默认创建) 我在Web应用程序(asp.net framework 4.5)中工作。这可能是我愚蠢的错误,但它让我的日子变得艰难:(给asp:login控件一个Id,例如Id=“L
我在Web应用程序(asp.net framework 4.5)中工作。这可能是我愚蠢的错误,但它让我的日子变得艰难:(给asp:login控件一个Id,例如
Id=“LoginUser”
,然后你可以像这样调用它
LoginUser.UserName.Text
试试这个
first, give id to login control
<asp:Login id="LoginView1" runat="server" ViewStateMode="Disabled" RenderOuterTable="false">
</asp:Login>
then,
// coding side
TextBox txt = (TextBox)LoginView1.FindControl("UserName");
if (txt != null)
{
//access here
}
首先,为登录控件提供id
那么,
//编码端
TextBox txt=(TextBox)LoginView1.FindControl(“用户名”);
如果(txt!=null)
{
//进入这里
}
希望对您有所帮助。谢谢。为您的
登录控制分配ID
<asp:Login runat="server" ID="loginForm" ViewStateMode="Disabled" RenderOuterTable="false">
试试这个:
TextBox UserName = (TextBox)Login1.FindControl("UserName");
if (UserName != null)
{
string abc = UserName.Text;
}
改变这个
<asp:Login runat="server" ViewStateMode="Disabled" RenderOuterTable="false">
或string abc=(文本框)LoginUser.FindControl(“用户名”).Text;
@Furqan现在它说'string'不包含'Text'的定义,并且没有接受'string'类型的第一个参数的扩展方法'Text'可以作为foundOperator'!'不能应用于'System.Web.UI.WebControls.TextBox'类型的操作数。它抛出NullReferenceException…但是我的问题通过使用这个TextBox用户解决了Name=(TextBox)Login1.FindControl(“用户名”);if(UserName!=null){string abc=UserName.Text;}…谢谢你的支持reply@Rahman您得到的值是什么NullReferenceException
我不明白?您已经有了RequiredFieldValidator
,我认为它工作正常。如果我没有错,您的代码可能还有其他问题。即使您让UserName
字段为空并禁用它RequiredFieldValidator
您不会得到任何错误。请在这里阅读关于NullReferenceException@Rahman请检查更新的答案,您必须为您的loginForm分配一个ID才能在codebehind中访问它,但是很有意思的是,没有ID
,其他答案是如何为您工作的。这就是您得到的原因NullReferenceException
。我使用了id,这就是其他答案有效的原因,我以为您使用的id在我的代码中碰巧是“loginForm:)@Rahman这是我用ID
在系统上创建登录控件时犯的一个键入错误,但是如果您查看发布的代码,我没有看到LoginForm
的ID
。请确认,或者可能是我错了。请检查更新的答案,您必须为您的登录信息分配一个ID才能在codebehind中访问它,然而,很有趣的是,其他答案在没有ID的情况下是如何为您工作的。这就是为什么您会得到NullReferenceException
@Suraj Singh我使用ID的原因,这就是其他答案工作的原因,我认为您使用的ID是偶然的“loginForm”在我的代码中:)这是我用该ID在系统上创建登录控件时犯的一个键入错误。但是,如果您查看发布的代码,我没有看到LoginForm的任何ID。请确认,或者可能是我错了。我正在谈论这一点,这就是我要说的我犯了一个打字错误,我使用了LoginForm
as
protected void btnLogin(object sender, EventArgs e)
{
TextBox tbox = this.loginForm.FindControl("UserName") as TextBox;
string abc = tbox .Text;
}
TextBox UserName = (TextBox)Login1.FindControl("UserName");
if (UserName != null)
{
string abc = UserName.Text;
}
<asp:Login runat="server" ViewStateMode="Disabled" RenderOuterTable="false">
<asp:Login runat="server" id="id_login" RenderOuterTable="false">
id_login.Username