我有一个网页表单页面,我有一个文本框,一旦点击就会将变量传递给后面的代码,然后又回到该页面的另一个元素,我无法让它工作。 这是我最接近的。
<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#非常新的指导。
答案 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>