从RouteData生成格式化的友好URL

时间:2015-05-09 03:54:58

标签: c# asp.net asp.net-mvc

我尝试以编程方式将查询字符串映射到我在RouteConfig.cs文件中创建的SEO友好路由网址,但似乎很难。

我的路线配置如下:

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}"}
);

我能够像这样检索正确的RouteData对象:

string url = "~/ReviewPost/Detail/?year=2015&month=05&filename=review-title";
RouteData routeData = RouteDataUtils.RouteByUrl(myUrl);

但是,我很难弄清楚如何生成友好的网址,该网址应该与我的配置中指定的网址相同(/2015/05/review-title/)。

RouteData对象是否能够在上面创建格式化URL的实例,还是我必须自己格式化?或者MVC框架是否有一个类使用RouteData对象正确格式化URL字符串?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

<强>更新

以这种方式尝试:

var urlHelper = new UrlHelper();
var theUrl = urlHelper.RouteUrl(routeData.Values);

<强>原始

尝试这样的事情:

var urlHelper = new UrlHelper();
var theUrl = urlHelper.RouteUrl("ReviewPost",routeData.Values);

请注意,RouteUrl的第一个参数是您的路线名称 - 即。你是如何在MapRoute中命名的。