将URL查询字符串值从JavaScript编码为ASP.NET MVC

Encoding URL Query String Value from JavaScript to ASP.NET MVC

本文关键字:编码 ASP NET MVC JavaScript URL 查询 字符串      更新时间:2023-09-26

我有一个使用ASP.NET MVC和JavaScript的应用程序。我正在我的JavaScript中生成一个URL,如下所示:

// Imagine 'filter' is "AT&T".
var v = filter.replace(/'/g, "''");
v = v.replace(/&/g, "%26%");
var t = "(clause eq '" + v + "')";
// At this point, t is "(clause eq 'AT%26%T')"
window.location = '@Url.Content("~/find?")' + 'q=' + t;

在我的ASP.NET MVC控制器操作中,我有以下内容:

public ActionResult Find(int? id, string q)
{
  // do stuff
}

如果我在Find操作中设置了一个断点,我会注意到q如下所示:

(clause  eq 'AT&%T')

我不知道为什么。我需要它是(clause eq 'AT%26%T')。我做错了什么?我理解它的一些编码问题。

原因是您编码的符号和%26是UrlDecoded服务器端返回&。如果你想保留url编码的版本,你也需要用它的编码等价物%25:转义百分号%

v = v.replace(/&/g, "%2526%");