Url.Action 是编码参数值

Posted

技术标签:

【中文标题】Url.Action 是编码参数值【英文标题】:Url.Action is encoding parameter values 【发布时间】:2011-02-03 20:46:32 【问题描述】:

在 ASP.NET MVC 中,如果我使用:

我明白了:

/usermanagement?page=%7B0%7D

但我想得到:

/usermanagement?page=0

为什么要encondig我的参数值,未编码的参数值怎么写?

谢谢

【问题讨论】:

如果您使用 javascript 进行替换,您也可以转义 JavaScript 字符串。例如:url = url.replace(escape('0'), pagenumber) 这个问题解决了吗?我遇到了同样的问题。 here 的回答对我有用。 【参考方案1】:

首先,您应该尽可能避免使用 QueryString 参数。将它们转换为路由参数。接下来,花括号应该被转义,这就是 Url.Action() 助手正在为您做的事情。

【讨论】:

这可能是他的本意,他想使用路由建立一个URL,但是将路由值应用到客户端【参考方案2】:

Url.Action 辅助方法用于生成 url。网址需要经过网址编码才能成为有效网址。所以你观察到的是完全正常的行为。助手通过编码所有参数生成一个有效的url。

【讨论】:

谢谢。我的问题是 0 是一个占位符。我将用实际的页码替换那个位。我已将占位符更改为其他内容 (PAGE),这样它就不会被编码。应该有一个选项来编码或不编码 URL 参数。 -1 感谢您陈述显而易见的问题,但 OP 的问题仍未得到解答

以上是关于Url.Action 是编码参数值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Url.Action 中发送多个参数?

如何阻止 URL.Action 包含参数?

使用 Url.action() 传递动态 javascript 值

Url.Action:如何将参数从视图传递到控制器?

MVC - 将整个模型作为参数传递给 JavaScript 中的 Url.Action

如何在@Url.Action 中传递动态值?