如何将变量从文本框传递到代码后面的页面
本文关键字:代码 变量 文本 | 更新日期: 2023-09-27 17:59:52
我有一个web表单页面,我有一一个文本框,单击后会将一个变量传递给后面的代码,然后返回到该页面的另一个元素中,但我无法使其工作。这是我最近的一次。
<asp:Panel ID="Search" runat="server" Visible="true">
<tr>
<td>
<asp:Label ID="lblSearch" runat="server" Text="Search"></asp:Label>
</td>
<td>
<asp:TextBox ID="search" runat="server" />
</td>
<td>
<asp:RequiredFieldValidator ID="valSearch" runat="server"
ControlToValidate="movieSearch" Text="Please enter text" />
</td>
<td>
<asp:Button ID="btnSubmit" runat="server" Text="Save"
OnClick="btnSubmit_Click" />
</td>
</tr>
</table>
</asp:Panel>
<asp:Panel ID="pnlSearchResult" runat="server" Visible="false">
<script>
var search = '<%=Server.UrlDecode(Request.QueryString["Data"]) %>';
</script>
</asp:Panel>
以及背后的代码:
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (IsValid)
{
pnlSearch.Visible = false;
pnlSearchResult.Visible = true;
Response.Redirect("search.aspx?Data=" + Server.UrlEncode(search.Text));
}
}
此外,由于某些原因,这不会改变两个面板的可见性。
如果有任何指导,我将不胜感激。我对asp和c#都很陌生。
面板的可见性没有改变,因为您使用以下命令向页面强制发送新的GET请求:-
Response.Redirect("search.aspx?Data=" + Server.UrlEncode(search.Text));
(我假设您的页面名为"search.aspx")
没有必要这么做。拆下此管路。
其次,我看到您想要将文本框的Text值强制转换为Javascript变量。更换此
var search = '<%=Server.UrlDecode(Request.QueryString["Data"]) %>';
用这个
var search = '<%= search.Text %>';
在页面事件上编写以下代码。另一个更重要的点是,你的第一个面板Id在aspx页面上是"搜索"而不是"pnlSearch",所以请更正
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["Data"] != null)
{
Search.Visible = false;
pnlSearchResult.Visible = true;
}
}
我建议不使用Response.Redirect
的解决方案。
代码隐藏Submit
按钮点击:
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (IsValid)
{
pnlSearch.Visible = false;
pnlSearchResult.Visible = true;
}
}
标记中:
<asp:Panel ID="pnlSearchResult" runat="server" Visible="false">
<script>
var searchTxt = document.getElementById('search');
if(searchTxt.value != null && searchTxt.value != ''){
//do your stuff
}
</script>