我有几个硬编码(非参数)部分定义的路由:生成与非参数的URL段路线链接上ASP.NET MVC 2
routes.MapRoute(null, "suggestion/list/by/{tag}",
new { controller = "Suggestion", action = "List", tag = UrlParameter.Optional });
想我在的索引视图SuggestionController,它有一个Model的Suggestion对象,我如何创建一个匹配该路线的链接?
我知道我可以通过使用纯醇完成I” HTML这样的:
<a href="/suggestion/list/by/<%=Model.Tag %>"><%=Model.Tag %></a>
但是,这使得它不可能通过其它路由参数(如一个RouteValueDictionary,例如),不是吗?
我真的想知道是否可以使用提供的助手之一,但没有命名路线。我宁愿将路由名称保留为空,以避免对我的视图进行硬编码,但我无法弄清楚如何在Html.ActionLink或RouteLink方法中使用这些非参数段。
任何想法?
在此先感谢。
谢谢你的回答s1mm0t。 2件事:我想你的意思是第一个代码片段中的Html.ActionLink(Html.Action没有这样的重载),所以我尝试了像你所建议的ActionLink,但它呈现以下路由: /suggestion/list/by?tag = TestTag 哪个当然不起作用。我需要它实际渲染: /建议/列表/通过/ TestTag 我是否在路由定义中错过了某些东西? – 2010-05-08 10:08:51
是的你是对的,在上面的解决方案中有一个错误,我现在已经添加了一个编辑。我已经测试了两次,并且它对上述两个解决方案都很好(显然使用ActionLink; O))。你的路线肯定被使用?应该先添加更具体的路线,否则将使用更通用的路线。尝试将上面的路线添加为第一条路线,就像测试一样,然后尝试使用ActionLink。 – s1mm0t 2010-05-08 12:45:03
好吧,这是令人尴尬的......我在我的路由定义中只有* only参数*。我的路由被定义为建议/列表/ by/{it},这当然会将tap作为查询字符串参数呈现。 :þ谢谢s1mm0t,你正确的回答回家;) – 2010-05-08 14:17:07