MVC:如何在ActionLink mapRoute Params中避免url编码

时间:2015-08-11 17:30:04

标签: 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>
}

我有一个扩展方法,也可以在网址之间插入短划线:

    public static string ToHyphenate(this string request)
    {
        return request.Replace(" ", "-");
    }

在RouteConfig中,我有这个:

        routes.MapRoute(
                name: "Category",
                url: "Category/{id}/{name}",
                defaults: new { controller = "Home", action = "Category", id = UrlParameter.Optional, name = UrlParameter.Optional },                    
        );

导航工作正常,在地址栏中,单词的格式正确,用破折号分隔,但是当您看到“查看页面来源”时,所有以这种格式生成的网址都会显示:

<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%">

我想在视图源中的地址栏中显示相同格式的网址,如下所示:

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

我的链接太多了,有没有全球方法可以避免这种情况?

感谢您的帮助......

0 个答案:

没有答案