[英]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.