【问题标题】:Adding search parameter to url to enable direct search from address bar将搜索参数添加到 url 以启用从地址栏直接搜索
【发布时间】:2016-01-27 20:09:42
【问题描述】:

我有一些旧网站要添加路由参数。它们是在没有使用 mvc 的情况下编码的,因此没有使用方便的 MVC 设置的 global.asax。

目前我有一个带有搜索功能的 url abc.com/xyz 页面。我可以输入一个查询,该查询会将我发送到另一个页面,但它具有相同的 url。我想这样做,以便如果我放置一些 url abc.com/xyz?search='what_You_Query' 的变体,它会给我搜索到的页面。现在,该 url 将我发送到我输入查询的页面。

网站以 C# 和 html 编码并保存在 aspx 文件中。网页也使用 jscripts

如果能得到任何帮助,我将不胜感激

编辑:似乎有些混乱,有一个搜索框允许用户在网页上查询。我想要的是允许用户直接链接到搜索的页面。

【问题讨论】:

  • 所以您希望人们通过修改 URL 进行搜索?为什么不将搜索框添加到路由到搜索页面的主模板(或每个页面)?否则,您将不得不检测search 查询字符串并重定向或显示不同的输出(看起来很乱)
  • 这样做的目的是让用户直接链接到搜索页面。目前没有办法做到这一点。我们只能超链接到您输入查询的搜索页面,而不是包含实际结果的页面

标签: c# asp.net


【解决方案1】:

您需要在页面加载时捕获它 - 检查查询字符串 (https://msdn.microsoft.com/en-us/library/ms524784%28v=vs.90%29.aspx),如果搜索在其中,则重定向到搜索页面。

修改为包含更多细节

我假设您使用 Web 表单(Microsoft 替代 MVC)。您需要添加一个服务器端 (http://www.seguetech.com/blog/2013/05/01/client-side-server-side-code-difference) Page_Load 事件 (https://msdn.microsoft.com/en-us/library/6w2tb12s.aspx)。那里的代码看起来像这样:

protected void Page_Load(object sender, EventArgs e)
{
    if(Request.QueryString["search"] != null)
        Response.Redirect("/search?" + UrlEncode(Request.QueryString["search"]), true);
}

请注意,我还没有测试过代码,我在这里稍微记忆一下 - 但这应该可以解决问题。

【讨论】:

  • 您的建议可能会奏效。我只是有几个问题要跟进。你知道如果我将那行代码输入到 aspx 文件的 head 标记中,或者我可以在任何地方调用它吗?您知道如何将查询字符串(如果检测到)放入搜索框中并自动搜索吗?如果这些是非常基本的问题,我很抱歉,但我只有有限的 html 和 css 经验。
  • 请查看修改后的答案。
猜你喜欢
  • 2015-09-24
  • 2020-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多