ASP.Net Mvc中我的Url中的%20

时间:2013-10-29 16:51:24

标签: c# asp.net-mvc

我有这样的网址:/%20Account/%20LogOn?ReturnUrl=%2f+Admin%2f+Index

我有两个问题:

1)为什么我%20Account之前有LogOn?它有点像空格吗?

2)如何在%20Account之前删除LogOn

路线可能有问题吗?

这是我的课程RegisterRoutes:

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");


        routes.MapRoute(
            null, 
            "", 
            new { controller = "Product", action = "List",category = (string)null,page=1 }) ;

        routes.MapRoute(null,
            "Page{page}", 
            new { controller = "Product", action = "List",category = (string)null });

        routes.MapRoute(
            null,
            "{category}",
            new { controller = "Product", action = "List", page = 1 });

        routes.MapRoute(
           null,
           "{category}/Page{page}",
           new { controller = "Product", action = "List"});

        routes.MapRoute(null, " {controller}/ {action}");

    }

4 个答案:

答案 0 :(得分:1)

因为您的网址在字词之间包含空格

例如,当您在浏览器中输入此地址(' somesite.com/some thing ')时,您的浏览器会将该地址编码为'somesite.com/some%20thing'< /强>

然后在后面的代码中解码您的URL,您可以使用Server.UrlDecode("someURL")

答案 1 :(得分:1)

  

1)为什么我在Account和LogOn之前有%20?是这样的吗?   空间?

这是因为您在URL字符串中有空格。那些被转换成编码的字符串,对于相同的是%20

  

2)如何在Account和LogOn之前删除%20?

您需要在Account和LogOn之前创建一个没有空格的链接。如果您使用Html Helper创建链接,则可能在操作字符串之前没有注意到空格。

答案 2 :(得分:0)

1)这是编码的URL

2)不确定您使用它的上下文,但您可以使用Server.UrlDecode("string")

对其进行解码

答案 3 :(得分:0)

我的应用程序中有一个类似的问题,其中%20出现在URL的末尾。我必须使用.Trim()才能删除空间,然后再传递所需的ID。

ruby

这解决了我的问题。