繁体   English   中英

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

[英]How to pass variable from textbox to code behind back to same page

我有一个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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM