C# 在Razor中对URL的一部分进行编码

C# 在Razor中对URL的一部分进行编码,c#,asp.net-mvc,razor,html-helper,C#,Asp.net Mvc,Razor,Html Helper,在Razor中对URL进行编码的正确方法是什么?我下面的尝试没有将空格更改为%20 survey.Name是传递给控制器的变量 <a href="~/Survey/Take/@Uri.EscapeDataString(survey.Name)">@survey.Name</a> 在您的情况下应该可以正常工作。久经考验 更新:(谢谢@Sam Rueby) 不要使用;仅用于浏览器兼容性。使用UrlEncode 您可以这样使用: @Html.ActionLink(su

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

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

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

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


更新:(谢谢@Sam Rueby)

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

您可以这样使用:

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

作为旁注,链接在不编码空间的情况下工作。当链接将在应用程序外部使用时,例如在电子邮件中使用时,您需要对其进行编码。

如果您使用
@Html.encode(survey.Name)
@Hackerman仍然没有对其进行编码。@HttpUtility.urlpathcode(survey.Name)@NagarajRaveendran nope仍然显示有空格。因此,即使我单击并将鼠标悬停在链接上,它仍然会显示它现在所显示的空格,因为它是本地的,而不是外部的?@Tsukasa mine显示使用Url.Encode()时编码的空格。我的旁注只是表示该链接仍然可以使用空格。此方法的说明说明为“请勿使用;仅用于浏览器兼容性。请使用UrlEncode”。谢谢。@SamRueby。更新并添加到答案中。我以前没有看到过,may文档已经更新了。遗憾的是,HttpUtility.UrlEncode仍然将空格编码为+,而现在已经失效的UrlPathEncode没有编码#
@Html.ActionLink(survey.Name, "Take", "Survey", new { name = Url.Encode(survey.Name) }, new { })