C# 从RouteData生成格式化的友好URL
我试图以编程方式将查询字符串映射到我在C# 从RouteData生成格式化的友好URL,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我试图以编程方式将查询字符串映射到我在RouteConfig.cs文件中创建的SEO友好路由URL,但似乎很难实现 我的路由配置如下所示: routes.MapRoute( name: "ReviewPost", url: "{year}/{month}/{filename}/", defaults: new {controller = "ReviewPost", action = "Detail"}, namespaces: new[] {"Applicatio
RouteConfig.cs
文件中创建的SEO友好路由URL,但似乎很难实现
我的路由配置如下所示:
routes.MapRoute(
name: "ReviewPost",
url: "{year}/{month}/{filename}/",
defaults: new {controller = "ReviewPost", action = "Detail"},
namespaces: new[] {"ApplicationName.Website.Controllers"},
constraints: new {year = @"\d{4}", month = @"\d{2}"}
);
var urlHelper = new UrlHelper();
var theUrl = urlHelper.RouteUrl("ReviewPost",routeData.Values);
我能够检索正确的RouteData
对象,如下所示:
string url = "~/ReviewPost/Detail/?year=2015&month=05&filename=review-title";
RouteData routeData = RouteDataUtils.RouteByUrl(myUrl);
但是,我很难弄清楚如何生成友好的URL,该URL应该与我的配置中指定的URL类似(/2015/05/review title/
)
RouteData
对象是否能够创建上述格式化URL的实例,或者我必须自己格式化它?或者MVC框架是否有一个使用RouteData
对象正确格式化URL字符串的类
任何帮助都将不胜感激。更新 试着这样做:
var urlHelper = new UrlHelper();
var theUrl = urlHelper.RouteUrl(routeData.Values);
原创
试着这样做:
routes.MapRoute(
name: "ReviewPost",
url: "{year}/{month}/{filename}/",
defaults: new {controller = "ReviewPost", action = "Detail"},
namespaces: new[] {"ApplicationName.Website.Controllers"},
constraints: new {year = @"\d{4}", month = @"\d{2}"}
);
var urlHelper = new UrlHelper();
var theUrl = urlHelper.RouteUrl("ReviewPost",routeData.Values);
请注意,
RouteUrl
的第一个参数是您的路线名称,即您在MapRoute
中对其命名的方式。请明确:您是说,当您尝试涉及ReviewPost/Detail/2015/5/review title的url时,它当前不起作用?url正在起作用。我正试图以编程方式将未格式化的查询字符串(~/ReviewPost/Detail/?year=2015&month=5&filename=review title
)转换为配置中的格式化查询字符串(/2015/05/review title/
)。为了清楚起见,我刚刚更新了我的答案。谢谢你的回答,但是我将无法访问路线的名称。当我以编程方式执行此操作时,我将只能使用完整的URL。该方法还有其他版本。尝试仅使用route data.values调用。就这一个参数。谢谢,我在电脑前会试试的。第二步怎么样?对不起,我一直想给你回复。它做得很好!看起来我的路线也很难将月份(05)解析为整数。我一把它改成字符串,它就开始按预期工作了。谢谢你的帮助!