我尝试以编程方式将查询字符串映射到我在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字符串?
任何帮助都将不胜感激。
答案 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
中命名的。