【问题标题】:Umbraco custom routingUmbraco 自定义路由
【发布时间】:2018-03-12 05:45:43
【问题描述】:

我真的陷入了一个起初似乎根本不是问题的问题,但我真的无法让它发挥作用。所以我希望有人能帮我解决我的问题。

这就是交易,我有一个运行 Umbraco 版本 7.6.4 程序集的站点:1.0.6396.36621。

我的问题是我想使用带有操作方法的自定义控制器,因此 url 将是:

http://example.com/CONTROLLER/ACTION/SOME_KIND_OF_ID 我需要它是一个特定的 url,因为这个站点将替换一个旧站点,如果特定的 ID 将作为该路由 URL 的参数出现,我需要做一些重定向回旧站点。

到目前为止,我已经劫持了路由,因此当我在网站上加载特定页面时,我可以让 Index 方法与我的控制器一起工作。但这仅限于http://example.com/CONTROLLER/,仅此而已 - 我也希望能够触发指定的 ACTION-name! (完全不确定这是正确的方法)

我在 Umbraco 中创建了一个与控制器同名的页面。

我确实需要有默认的 Umbraco 路由才能为站点的其余部分工作。我只需要访问特定的控制器/动作/ID :)

我真的希望有人能帮我一把!

最好的问候, 丹尼尔

【问题讨论】:

    标签: c# model-view-controller routing umbraco


    【解决方案1】:

    您可以在活动中使用RouteTable.Routes.MapRoute

    IApplicationEventHandler.OnApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
        {
          RouteTable.Routes.MapRoute("NameTheRoute", "{controller}/{action}/{id}",
                                     new { 
                                           controller = "YourController",
                                           action = "YourAction", 
                                           id = UrlParameter.Optional
                                         });
        }
    

    您可以链接您的控制器和表面控制器。

    【讨论】:

    • 感谢您的回答!我有一个相当新手的后续问题,当我只运行 Umbraco 时,我没有路由类的任何 app_start 文件夹。我应该在上面创建并将 RouteTable 扔在那里还是应该如何继续?最好的问候,丹尼尔
    • 更新 - 我创建了一个创建新 MapRoute 的类。当我输入我的example.com/controller/action/id 时,它就像魅力一样击中 - 但现在的问题是每次我进入路线时它都会击中。现在我什至无法进入起始页,因为一切都通过该路由。有任何想法吗?我试图创建一个默认的,以便能够让网站回到起始页的正轨,但没有运气。最好的问候,丹尼尔
    • 您可以代替使用通配符 {controller}/{action} 来提供静态路由,例如 ( staticapi/action/{id} ),并提供您对匿名对象的确切控制器和操作作为第三个参数传递。这样,它只会将特定路由与特定控制器和操作映射。 (如果您需要示例,请告诉我更新我的答案。)谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多