我有一个图像,是一个超链接。点击图片后,如何从服务端访问searchRedirect函数进行重定向?
<input id="textSearch" runat="server" name="textSearch" type="text" />
<asp:HyperLink id="searchButton" runat="server">
<img alt="" src="images/SearchButton.png"/>
</asp:HyperLink>
protected void searchRedirect()
{
Response.Redirect("/NewProject/Home/?searchString=" + textSearch.Value;
}发布于 2011-02-10 03:19:26
您将希望使用LinkButton并侦听其Click event,而不是HyperLink
<input id="textSearch" runat="server" name="textSearch" type="text" />
<asp:LinkButton id="searchButton" runat="server" OnClick="searchRedirect">
<img alt="" src="images/SearchButton.png"/>
</asp:LinkButton>
protected void searchRedirect(sender As Object, e As EventArgs)
{
Response.Redirect("/NewProject/Home/?searchString=" + textSearch.Value);
}Al Kepp建议,这样做会导致页面回发只是为了实现重定向,从而导致不必要的页面加载。像下面这样的javascript版本可以避免第一次回发:
<input id="textSearch" runat="server" name="textSearch" type="text" />
<a href="#" onclick="window.location='/NewProject/Home/?searchString=' + getElementById('textSearch').value; return false;">
<img alt="" src="images/SearchButton.png"/>
</a>我实际上并没有测试该代码,但我不认为我有任何打字错误。
发布于 2011-02-10 03:24:30
或者用JavaScript编写,因为这是在客户端执行该代码的唯一方法。这是让它完全按照您的期望工作所必需的。
或者像尼克·斯皮尔斯说的那样使用LinkButton。在这种情况下,您将不会在url地址中看到testSearch.Value。(这通常很好,但如果您想在那里看到它,最好是用JavaScript编写它。)但与Nick Spier的代码不同的是,我会在那里省略redirect命令,并立即执行所需的搜索操作。(因为重定向将导致向客户端发送两个页面,这不是用户通常在按下搜索按钮时所期望的。)
发布于 2011-02-10 03:26:56
或者你可以使用javascript,而不需要额外的服务器往返。下面是一个使用jQuery的示例
<input id="textSearch" class="textSeachClass" runat="server" name="textSearch" type="text" />
<asp:HyperLink id="searchButton" CssClass="searchButtonClass" runat="server">
<img alt="" src="images/SearchButton.png"/>
</asp:HyperLink>
<script type="text/javascript">
// This code should be put in a separate .js-file so it can
// be cached and the aspx page will be more SEO-friendly
$("a.searchButtonClass").click(function (e) {
e.preventDefault();
window.location = "/NewProject/Home/?searchString=" + $("input.textSeachClass").val();
});
</script>我使用css类作为选择器,因为除非您使用.Net Framework4,否则ASP.Net Webforms会在呈现控件时更改控件的客户端id。
https://stackoverflow.com/questions/4949385
复制相似问题