DNN 6.2服务框架中的路由

时间:2013-03-28 21:30:53

标签: asp.net-mvc dotnetnuke

所以我在DNN 6.2 Services Framework中运行了基本的Hello World服务,它基于MVC。从例子中得出的路线是:

routeManager.MapRoute("MyServices", "{controller}/{action}", new[] { "HelloWorldServices" });

当我的操作进入〜/ DesktopModules / MyServices / API / Welcome / HelloWorld时,它会调用HelloWorld函数并运行。到目前为止,我已经设法弄清楚我能做到这一点:

routeManager.MapRoute("MyServices", "{controller}/{action}/{userID}", new[] { "HelloWorldServices" });

当我转到〜/ DesktopModules / MyServices / API / Welcome / users时,它会调用users函数,该函数具有ID的可选参数,并且正在运行。但现在我想创建一个端点〜/ DesktopModules / MyServices / API / Welcome / locations,它们可以获取位置ID。我不能写这个:

routeManager.MapRoute("MyServices", "{controller}/{action}/{locationID}", new[] { "HelloWorldServices" });

甚至

routeManager.MapRoute("MyServices", "{controller}/locations/{locationID}", new[] { "HelloWorldServices" });

它不起作用。无论哪个是第一个(用户或位置)识别ID,其中以秒为准。虽然我可以弄清楚什么不起作用,但我不知道什么会起作用,并且尽管经过大量的搜索仍无法找到。我还发现了一些看起来像这样的例子:

routeManager.MapRoute("Html", "default", "", new { controller = "Service", action = "GetTabs" }, new[] { "DotNetNuke.Modules.Html" });

但我也无法弄清楚它是如何运作的。最后我还要做“〜/ DesktopModules / MyServices / API / Welcome / users / userid / locations /”。如果有人能给我一些例子,那将非常感激!

更新:根据答案,我查找了MVC路由。我意识到我必须一般地写它,现在有这些工作:

{controller}/{action}
{controller}/{action}/{id}
{controller}/{action}/{id}/{secondaction}
{controller}/{action}/{id}/{secondaction}/{secondid}

“id”,“secondaction”和“secondid”都是可选的字符串参数。所以我可以拥有“users / userid / locations / locationid”......“locations / locationid”部分在“用户”功能中处理。

1 个答案:

答案 0 :(得分:0)

我在这里的一般建议是使用类似

的路线图
{controller}/{action}/{id}

这是典型的默认ASP.NET MVC路由样式。然后你可以有一个用户方法作为可选的id参数,一个带有可选id参数的locations方法等。

这将为您提供真正动态的路线,并且更容易管理

相关问题