Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .aspx中的文本框在.cs中不可访问_C#_Asp.net_Code Behind - Fatal编程技术网

C# .aspx中的文本框在.cs中不可访问

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

我试了很多,花了一整天的时间在这上面,但都是徒劳的。我发现了许多与我的问题相关的问题,但没有人解决我的问题。我在Login.aspx中有一个ID=“UserName”的文本框,并试图在Login.aspx.cs中获取其值,但它给出了一个错误,即“当前上下文中不存在用户名”。这是我的Login.aspx(由VS 2012默认创建)


我在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