【问题标题】:ASP.NET MVC - Search Criteria as Route Parameter in stead of querystring - Illegal CharactersASP.NET MVC - 搜索条件作为路由参数而不是查询字符串 - 非法字符
【发布时间】:2010-08-21 07:35:19
【问题描述】:

我在how to optimize my search for SEO and users without JavaScript上问过一个问题,我通过RedirectToAction找到了答案

但是,在这样做的过程中,我发现了一个需要解决的新问题。

如果我提交搜索

“敏捷的棕色狐狸跳过了懒惰的狗”

(试图用完整短语的“引号”模仿谷歌)

应用程序在我身上炸毁(YSOD)

路径中有非法字符。
说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

网址看起来像这样 (Firefox)
http://localhost/search/"这只敏捷的棕色狐狸跳过了懒惰的狗"

我尝试使用Url.Encode,但这也不起作用...网址看起来像
http://localhost/search/%2522the%2bquick%2bbrown%2bfox%2bjumped%2bover%2bthe%2blazy%2bdogs%2522

错误提示

“/”应用程序中的服务器错误。
HTTP 错误 400 - 错误请求。

我想念的东西一定很明显。 异常详细信息:System.ArgumentException:路径中有非法字符。

【问题讨论】:

    标签: asp.net-mvc url-encoding


    【解决方案1】:

    查看您上一个问题中的表单,我原以为 searchTerm 是一个查询字符串参数,而不是路由的一部分。

    http://localhost/search?searchTerms=..
    

    如果您希望搜索成为路线的一部分,则必须正确设置路线。

    如果您提供更多堆栈跟踪或路由配置,您可能会得到更好的答案。无论如何,希望这会有所帮助。

    【讨论】:

    • 没有堆栈跟踪。我发布的“400”错误就是所有内容。
    • 您是否尝试将 searchTerms 从路径的一部分更改为查询字符串?
    • 是的,它作为查询字符串的一部分工作得很好。我只是希望我可以将它用作路线的一部分 - 类似于“海盗湾” - thepiratebay.org/search/searchTerm
    • 很公平。似乎 ASP.NET 中存在有关路由中某些特殊字符的问题,这可以通过自定义路由来解决(并且可能已在 3.0 中修复?)。这个问题可能会有所帮助:stackoverflow.com/questions/373599/…
    • 谢谢...我会留意的。
    猜你喜欢
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 2017-11-03
    相关资源
    最近更新 更多