【发布时间】:2013-12-03 11:18:12
【问题描述】:
我在控制器 ApplicationsController 中有一个方法,我需要在其中获取操作方法的基本 URL:
public ActionResult MyAction(string id)
{
var url = Url.Action("MyAction", "Applications");
...
}
问题是这包括来自当前路由数据的string id,当我需要没有 URL 时(该 URL 用于在基于 URL 的查找中从 CMS 获取内容)。
我尝试将null 和new { } 作为routeValues 参数传递,但无济于事。
匹配的路由如下(高于所有其他路由):
routes.MapLowercaseRoute(
name: "Applications",
url: "applications/{action}/{id}",
defaults: new { controller = "Applications",
action = "Index", id = UrlParameter.Optional });
我已经看到其他几个问题涉及此问题,但似乎都没有可行的解决方案。目前,我正在诉诸于对控制器中的路径进行硬编码;但是,我希望能够将其抽象为动作过滤器,因此我需要能够生成 URL。
是否有一种干净/传统的方法来防止这种行为?
【问题讨论】:
-
你确定这条路线解决了吗? (如果它是唯一的)。
-
@ThomasJaskula - 肯定的 - 我在它下面有一条包罗万象的路线,它直接重定向到静态 CMS 内容。评论应用程序路由会导致第二条路由捕获它。已将其作为第一个停靠港进行测试,这是唯一可以解析该 URL 的路由。
标签: c# asp.net-mvc-4 urlhelper