【问题标题】:Encode part of URL in Razor在 Razor 中编码部分 URL
【发布时间】:2016-10-28 20:55:57
【问题描述】:

在 Razor 中编码 URL 的正确方法是什么?我在下面的尝试没有将空格更改为%20

survey.Name是传递给控制器​​的变量

<a href="~/Survey/Take/@Uri.EscapeDataString(survey.Name)">@survey.Name</a>

【问题讨论】:

  • 如果你使用@Html.Encode(survey.Name)会怎样
  • @Hackerman 仍然不对其进行编码。
  • @HttpUtility.UrlPathEncode(survey.Name)
  • @NagarajRaveendran nope 仍然出现空格。

标签: c# asp.net-mvc razor html-helper


【解决方案1】:

你可以像这样使用Url.Encode

@Html.ActionLink(survey.Name, "Take", "Survey", new { name = Url.Encode(survey.Name) }, new { })

附带说明,该链接无需对空间进行编码即可工作。当链接将在您的应用之外使用时(例如在电子邮件中),您需要对其进行编码。

【讨论】:

  • 所以即使我单击并将鼠标悬停在链接上,它仍然会显示它现在正在执行的空间,因为它是本地的而不是外部的?
  • @Tsukasa mine 显示了使用 Url.Encode() 时编码的空格。我的旁注只是意味着该链接仍然可以使用空格。
【解决方案2】:

HttpUtility.UrlPathEncode 在您的情况下应该可以正常工作。久经考验!

Here's a working fiddle example

<a href="~/Survey/Take/@HttpUtility.UrlPathEncode(survey.Name)">@survey.Name</a>

更新:(感谢@Sam Rueby)

不要使用;仅用于浏览器兼容性。使用 UrlEncode。

【讨论】:

  • 此方法的说明声明“不要使用;仅用于浏览器兼容性。使用 UrlEncode”。
  • 谢谢。@SamRueby。更新并添加到答案。我以前没见过,可能文档更新了。
  • 可悲的是 HttpUtility.UrlEncode 仍然将空格编码为 +,而现在已失效的 UrlPathEncode 不编码 #
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-30
  • 1970-01-01
  • 2015-02-07
  • 1970-01-01
  • 1970-01-01
  • 2022-10-06
  • 1970-01-01
相关资源
最近更新 更多