c# - MVC 表单提交需要带有 %20 的查询字符串而不是 '+'
问题描述
我的表单中有一个搜索输入类型。提交表单后,页面会重新加载带有 + 的查询参数
因此,如果我搜索abc def
查询参数变为?q=abc+def
url 变为https://localhost:44300/Search?q=abc+def
现在,这将作为 api 调用发送到 webapi。所以然后在服务器端我+
用空间替换然后在控制器上执行搜索。现在当我搜索abc def+efg
它时abc+def%2Bdef
request.Query = request.Query.Replace('+', ' ');
request.Query = HttpUtility.UrlDecode(request.Query);
因此,在服务器端,我首先将参数的+
s 替换为空格字符,然后对其进行解码,最后我得到abc def+efg
了我正在寻找的控制器。
如果在表单提交时对 url 进行了编码,所有这些都可以避免。所以如果从一开始查询参数是?q=abc%20def%2Befg
我只需要解码它。
怎么做?
编辑
页面先渲染,然后一个vue组件获取查询参数,并通过axios调用api控制器。/api/search
const searchQuery = this.$router.getQueryParam('q');
this.queryParams.query = searchQuery ? searchQuery : null;
return axios.get(`/api/search`, {
params: queryParams,
});
解决方案
你可以这样做。
Uri.EscapeUriString(request.Query)
推荐阅读
- ruby - W: Lint/Void: Lital <<-DOC 在 void 上下文中使用
- c# - Excel VSTO C# - 创建 ListObject 的 VSTO 对应项会中断重命名
- c# - 从 Azure Active Directory 访问具有授权类型的用户
- java - 如何在 groovy spock 中模拟 Autowired 构造函数依赖项
- powershell - 从分析组件存储中提取值?
- javascript - (节点:2724)UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“第一个”
- python - Python,如何检查行的第一个元素是否在csv doc上重复
- reactjs - componentWillMount() 的 React JS 测试用例,异步测试 API 调用
- scala - sbt 新项目创建:没有 SDK 问题,下载 JDK 失败
- r-caret - 使用 caret 和 roc() 时正确的响应和预测器参数