【发布时间】:2010-12-25 15:44:27
【问题描述】:
我正在尝试将我们的链接切换到 T4MVC,但我遇到了不属于操作签名一部分的参数的小问题。我们的路线是这样的:
http://www.mydomain.com/{fooKey}/{barKey}/{barID}
==> 导致 BarController.Details(barID)。
fooKey 和 barKey 仅出于 SEO 目的添加到链接中。 (因为 bar 是 foo 的子实体,我们希望在 URL 中表示该层次结构)
到目前为止,我们会使用
<% =Html.ActionLink(bar.Name, "Details", "Bar", new {barID = bar.ID, fooKey = bar.Foo.Key, barKey = bar.Key}, null)%>
这将引导我们到 BarController.Details(barID),同时将 fooKey 和 barKey 保留在 URL 中。
现在我们从 T4MVC 开始,我们尝试将其更改为
<% =Html.ActionLink(bar.Name, MVC.Bar.Details(bar.ID), null)%>
由于 barKey 和 fooKey 不是 Details 操作签名的一部分,因此它们在 URL 中不再可见。
有没有办法解决这个问题而不必将这些参数添加到动作签名中?
【问题讨论】:
-
你的路由是怎么配置的?
-
相关路由是这样配置的:routes.Add(new LowercaseRoute("go/{fooKey}/{barKey}/{id}", new RouteValueDictionary(new {controller = "Bar", action = "Details"}), new RouteValueDictionary(new {id = @"\d+"}), new MvcRouteHandler()));从这里开始的小写路线 - coderjournal.com/2008/03/force-mvc-route-url-lowercase
-
(对不起,缩进很糟糕)
标签: asp.net-mvc seo t4mvc