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

时间:2014-04-24 05:59:06

标签: c# javascript asp.net

我有一个网页表单页面,我有一个文本框,一旦点击就会将变量传递给后面的代码,然后又回到该页面的另一个元素,我无法让它工作。 这是我最接近的。

<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#非常新的指导。

3 个答案:

答案 0 :(得分:0)

面板的可见性没有变化,因为您正在强制向页面发出新的GET请求: -

Response.Redirect("search.aspx?Data=" + Server.UrlEncode(search.Text));

(我假设您的网页被称为&#39; search.aspx&#39;)

没有必要这样做。删除此行。

其次,我发现你想强制将文本框的Text值强制转换为Javascript变量。替换此

var search = '<%=Server.UrlDecode(Request.QueryString["Data"]) %>';

用这个

var search = '<%= search.Text %>';

答案 1 :(得分:0)

在页面事件上写下面的代码。 另一个更重要的一点是你第一个面板ID是&#34;搜索&#34;不是&#34; pnlSearch&#34;在aspx页面上所以请更正

         protected void Page_Load(object sender, EventArgs e)
                   {

                    if (Request.QueryString["Data"] != null)
                       {
                            Search.Visible = false;
                          pnlSearchResult.Visible = true;
                        }
                    }

答案 2 :(得分:0)

我推荐不使用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>