为什么它说没有我的文本框

时间:2014-06-14 16:29:38

标签: asp.net

我在下面写了代码。但我不知道为什么我会收到错误。但是每件事似乎都没问题。 它说上下文中没有我的文本框。但是有。

    <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <form id="form1" runat="server">
       <asp:TextBox ID="address" runat="server"/>
        <div class="form1">

            <label for="fname">
                <span>name:</span>
                <asp:TextBox ID="fname" runat="server"/>

            </label>

            <label for="lname">
                <span>lname: </span>
                <asp:TextBox ID="lname" name="lname" runat="server" />

           </label>
            .
            .
            .
         </div>

 

    protected void send2_Click(object sender, EventArgs e)
     {
    tbl_register tbl = new tbl_register();

    tbl.firstname = fname.Text;  // The name 'fname' does not exist in the current context  
    tbl.lastname = lname.Text;   // The name 'lname'does not exist in the current context
    tbl.address = address1.Text; //..
    tbl.phone = phone.Text;      //..
    tbl.email = email3.Text;     //..
    db.tbl_registers.InsertOnSubmit(tbl);
    db.SubmitChanges();

}

2 个答案:

答案 0 :(得分:1)

编码的文本框是标签的子项。我不以那种方式编码我的标签。为了使用作为子控件的控件,您必须使用Control.FindControl,在本例中为fname.FindControl(&#34; fname&#34;)。我不会将控件命名为与其他控件相同。您也可以关闭标签标签,使其不包含这些控件,然后可以通过名称引用控件。

答案 1 :(得分:0)

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">

表明这是一个使用MasterPage的网络表单。

在内容占位符内,您有一个在服务器上运行的表单声明:

 <form id="form1" runat="server">

但是,在MasterPage.master上,您已经有一个在包装内容占位符的服务器上运行的表单。

asp.net不允许2个嵌套表单在服务器上运行。