Asp.net mvc MVC:如何避免ActionLink mapRoute参数中的url编码

Asp.net mvc MVC:如何避免ActionLink mapRoute参数中的url编码,asp.net-mvc,html-encode,Asp.net Mvc,Html Encode,在我看来,我在MapRoute中将带有“name”参数的ActionLink作为UrlParameter: foreach (var c in Model.NavCategories) { <li>@Html.ActionLink(c.Name, "Category", "Home", new { c.ID, Name = c.Name.ToHyphenate() }, null)</li> } 在RouteC

在我看来,我在MapRoute中将带有“name”参数的ActionLink作为UrlParameter:

foreach (var c in Model.NavCategories)
{                        
      <li>@Html.ActionLink(c.Name, "Category", "Home", new { c.ID, Name = c.Name.ToHyphenate() }, null)</li>
}
在RouteConfig中,我有:

        routes.MapRoute(
                name: "Category",
                url: "Category/{id}/{name}",
                defaults: new { controller = "Home", action = "Category", id = UrlParameter.Optional, name = UrlParameter.Optional },                    
        );
导航工作正常,地址栏中的文字格式正确,并用破折号分隔,但当您看到页面的查看源时,所有URL均以此格式生成:

<a href="/category/1/%d8%ae%d9%88%d8%af%d8%b1%d9%88">
<a href="/category/2/%d8%a8%d8%a7%d9%86%da%a9%d8%8c%">

我希望URL的格式与view source中地址栏中显示的格式相同,如下所示:

<a href="/category/1/my-category-name-one">
<a href="/category/2/my-category-name-two">

我有太多的链接,所以有什么全球性的方法来避免这种情况吗


感谢您的帮助……

Url编码不应影响连字符。看来还有别的事情在发生。事实上,您发布的示例“编码”字符串-例如,“%d8%ae%d9%88%d8%af%d8%b1%d9%88”-看起来像是阿拉伯字符串的UTF-8编码。@Peter:是的,我的应用程序是波斯语,我在web.config的全球化部分添加了UTF-8,在_Layout:content=“text/html;charset=UTF-8”的元标记中添加了charset=UTF-8,但不工作URL编码不应影响连字符。看来还有别的事情在发生。事实上,您发布的示例“编码”字符串-例如,“%d8%ae%d9%88%d8%af%d8%b1%d9%88”-看起来像是阿拉伯字符串的UTF-8编码。@Peter:是的,我的应用程序是波斯语的,我在web.config的全球化部分添加了UTF-8,在_Layout:content=“text/html;charset=UTF-8”的元标记中添加了charset=UTF-8,但不起作用
<a href="/category/1/my-category-name-one">
<a href="/category/2/my-category-name-two">