好的所以我正在尝试创建一种注册向导,因此asp中有不同的部分,如下所示:
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a href="#addwizard" data-parent="#accordion-demo" data-toggle="collapse">
Term Time Address
</a>
</h4>
</div>
<div id="termaddy" class="panel-collapse collapse in" runat="server">
<div class="panel-body">
<form id="form-termaddy" >
<div class="main_input_box">
<div class="col-lg-6">
<div class="form-group">
<asp:TextBox ID="txttermhousenum" runat="server" placeholder="House Number" class="form-control" textmode="SingleLine"></asp:TextBox>
<asp:RequiredFieldValidator runat="server" id="RequiredFieldValidator28" controltovalidate="housenum" errormessage="Required Field" display="Dynamic"/>
</div>
<div class="form-group">
<div class="main_input_box">
<asp:TextBox ID="txtxtermstreet" runat="server" placeholder="Street" class="form-control" textmode="SingleLine"></asp:TextBox>
<asp:RequiredFieldValidator runat="server" id="RequiredFieldValidator29" controltovalidate="street" errormessage="Required Field" display="Dynamic"/>
</div>
</div>
<div class="form-group">
<div class="main_input_box">
<asp:TextBox ID="txtxtermpost" runat="server" placeholder="Postcode" class="form-control" textmode="SingleLine"></asp:TextBox>
<asp:RequiredFieldValidator runat="server" id="RequiredFieldValidator31" controltovalidate="postcode" errormessage="Required Field" display="Dynamic"/>
</div>
</div>
</div>
</div>
</form>
</div> <!--/.panel-body -->
</div> <!-- /#addwizard -->
</div> <!-- /.panel.panel-default -->
因此,每当用户填写表单并点击保存时。 c#获取文本框的详细信息并更新db:
//term time address info
string txttermhouse = ((TextBox)termaddy.FindControl("txttermhousenum")).Text;
string txttermstr = ((TextBox)termaddy.FindControl("txtxtermstreet")).Text;
string txttermpostcode = ((TextBox)termaddy.FindControl("txtxtermpost")).Text;
termaddress(txttermhouse, txttermstr, txttermpostcode);
问题是,当代码通过此部分时,它会将每个文本框视为空白,并将它们保存在db as和empty字符串中。我也尝试直接将文本框引用到方法中,即:
termaddress(txttermhousenum.Text, txtxtermstreet.Text, txtxtermpost.Text);
但两种方式似乎都没有用。任何有关如何获取文本框值的帮助都将非常感激,对此问题非常困惑。
答案 0 :(得分:2)
如果您使用母版页,请确保没有两个<form runat="server">
代码。我曾经遇到过这个问题,结果就是这样。
答案 1 :(得分:0)
当您直接使用Textbox
时,无需使用FindControl:
尝试按以下方式访问它们
string txttermhouse = txttermhousenum.Text;
string txttermstr = txtxtermstreet.Text;
string txttermpostcode = txtxtermpost.Text;
您可以按如下方式传递给您的方法:
termaddress(txttermhouse , txttermstr , txttermpostcode );
答案 2 :(得分:0)
为什么使用运行在服务器上的div
来查找控件?如果您仅使用它来查找控件,我建议您从runat="server"
中删除div
。这会使您的回复变慢。
您可以按如下方式访问它们:
string txttermhouse = txttermhousenum.Text;
string txttermstr = txtxtermstreet.Text;
string txttermpostcode = txtxtermpost.Text;
你真的不需要找到控件。您可以直接访问它们。 您需要在重复内部网格列时找到控件 模板或转发器等,然后你需要找到控制 否则你可以直接访问它们。