如何将变量从文本框传递到代码后面的页面

本文关键字:代码 变量 文本 | 更新日期: 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>