gpt4 book ai didi

asp.net-mvc - 不希望 RedirectToAction() 转义 "plus"个字符

转载 作者:行者123 更新时间:2023-12-04 10:58:45 24 4
gpt4 key购买 nike

我正在尝试做一些类似于 Stackoverflow 正在做的事情。

我有一个快速搜索文本框,我可以输入任意数量的单词并提交我的搜索。接收操作执行此操作(缩短版)

public ActionResult Search(string query)
{
Regex rx = new Regex("(?<word>[a-zA-Z0-9]+)");

StringBuilder parts = new StringBuilder();
foreach(Match m in rx.Matches(query))
{
parts.Append(parts.Length > 0 ? "+" : string.Empty);
parts.Append(m.Groups["word"]);
}
return RedirectToAction("Search", new { query = parts.ToString() }); ;
}

但不是

http://localhost/search?query=word+word

我懂了

http://localhost/search?query=word%2Bword

Stackoverflow 做了一些非常相似的事情,我也想做同样的事情。我不希望我的优点在我的 URL 中被转义。但我还是想用 RedirectToAction如果可能的话。

最佳答案

我认为您无法按照自己的意愿使用 RedirectToAction。问题是它总是会对您的参数进行 URL 编码。

我认为您必须自己处理查询字符串。我的建议是使用 Url.Action() 生成基本 url,因为它的工作方式与 RedirectToAction 非常相似,但返回一个字符串。然后你必须自己生成查询字符串。请不要忘记在每个查询字符串项上使用 Url.Encode()。

我也有一种暗示,你可以通过自定义路线完成你想要的。我不是这方面的专家,但我看到了一些关于在路由中使用正则表达式的内容,这可能值得研究。

编辑:我想出了一种更简单的方法来做你想做的事。无需自己手动添加加号,只需使用 Url.Action() 创建完整的正确 url,然后用加号替换所有 %20 实例。然后重定向到该网址。喜欢:

string newUrl = Url.Action("Search", new { query = query });
string plussedUrl = newUrl.Replace("%20", "+");
return new RedirectResult(plussedUrl);

关于asp.net-mvc - 不希望 RedirectToAction() 转义 "plus"个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2229620/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com