首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何重定向?

问如何重定向?
EN

Stack Overflow用户
提问于 2011-02-10 03:15:23
回答 3查看 758关注 0票数 0

我有一个图像,是一个超链接。点击图片后,如何从服务端访问searchRedirect函数进行重定向?

代码语言:javascript
复制
<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;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-10 03:19:26

您将希望使用LinkButton并侦听其Click event,而不是HyperLink

代码语言:javascript
复制
<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版本可以避免第一次回发:

代码语言: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>

我实际上并没有测试该代码,但我不认为我有任何打字错误。

票数 5
EN

Stack Overflow用户

发布于 2011-02-10 03:24:30

或者用JavaScript编写,因为这是在客户端执行该代码的唯一方法。这是让它完全按照您的期望工作所必需的。

或者像尼克·斯皮尔斯说的那样使用LinkButton。在这种情况下,您将不会在url地址中看到testSearch.Value。(这通常很好,但如果您想在那里看到它,最好是用JavaScript编写它。)但与Nick Spier的代码不同的是,我会在那里省略redirect命令,并立即执行所需的搜索操作。(因为重定向将导致向客户端发送两个页面,这不是用户通常在按下搜索按钮时所期望的。)

票数 1
EN

Stack Overflow用户

发布于 2011-02-10 03:26:56

或者你可以使用javascript,而不需要额外的服务器往返。下面是一个使用jQuery的示例

代码语言:javascript
复制
<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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4949385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档