C# MVC中的Url重写

C# MVC中的Url重写,c#,asp.net,asp.net-mvc,url-rewriting,routing,C#,Asp.net,Asp.net Mvc,Url Rewriting,Routing,我在一个MVC应用程序中工作,我想让url更友好。我曾尝试使用路由来实现这一点,但在某些url上它不起作用 我希望像http://localhost:55696/fr/Pages/Lists?pageType=PropertiesList&list=Market这样的url在法语中变成http://localhost:55696/fr/Market 我在试着用 routes.MapRoute( name: "MarketFr", url: UrlStrings.ResourceM

我在一个MVC应用程序中工作,我想让url更友好。我曾尝试使用路由来实现这一点,但在某些url上它不起作用

我希望像http://localhost:55696/fr/Pages/Lists?pageType=PropertiesList&list=Market这样的url在法语中变成http://localhost:55696/fr/Market

我在试着用

routes.MapRoute(
    name: "MarketFr",
    url: UrlStrings.ResourceManager.GetString("Market", new CultureInfo(CultureEnum.fr.ToString())),
    defaults: new {controller = "Pages", action = "Lists"}
);
但结果是

我怎样才能解决这个问题。 Lists方法的定义如下:

public ActionResult Lists(string pageType, string list = "", string viewType = "")
我做了如下改变:

routes.MapRoute(
                name: "MarketFr",
                url: UrlStrings.ResourceManager.GetString("Market", new CultureInfo(CultureEnum.fr.ToString())),
                defaults: new { controller = "Pages", action = "Lists", pageType = "PropertiesList", list = "Market", viewType = "" }
                );
现在它根本不起作用了,我的url一开始就像:

如果我在地址栏中键入,它会将我转到右侧页面,但当我单击链接到

Url.Action("Lists", "Pages", new { pageType = PageTypesEnum.PropertiesList, list = PropertyListViewMode.Market })

在地址栏中,url是

不清楚如何生成这样的url,因此假设类似url.Action的内容。对于特定情况,您必须指定所有默认值,以生成您喜欢的url:

    url: "fr/market",    
    defaults: new {controller = "Pages", action = "Lists", 
                   pageType="PropertiesList", list= "Market"}

您在该URL中有空格。空格字符为。 将url中的每个空格替换为%20:

http ://localhost:55696/fr/Pages/Lists?pageType=PropertiesList&list=Market%20to%20become%20http://localhost:55696/fr/(market_in_french)