【问题标题】:Umbraco routes alongside normal mvc routesUmbraco 路由与正常 mvc 路由并排
【发布时间】:2017-03-10 23:07:52
【问题描述】:

我已经通过 nuget 在 FRESH mvc5 项目上安装了 umbraco,并且我有一个普通的 MVC 控制器。

 public class HomeController : Controller
    {
        public ActionResult Dashboard(RenderModel model, int? Id)
        {              
            return Content("ok");
        }
}

问题是当我尝试进入 /Home/Dashboard

我收到此错误:No umbraco document matches the url '/home/dashboard'.

我怎样才能让我的 mvc 控制器与我的 umbraco 共存。我对 umbraco 文档和模板路由不感兴趣,只是让我的正常 MVC 控制器像什么都没发生一样工作。我打算稍后通过在我的 mvc 控制器中使用它的 ID。

【问题讨论】:

标签: c# asp.net-mvc asp.net-mvc-5 umbraco umbraco7


【解决方案1】:

Umbraco 不适用于必须通过 SurfaceController 继承的简单控制器。因为它可以像这样与 Surface Controller 一起使用

public class AccountController : SurfaceController
{
        public ActionResult Dashboard(RenderModel model, int? Id)
        {              
            return Content("ok");
        }
}

您可以使用以下 URL 调用此方法 /umbraco/surface/{controllername}/{action}/{id}

查看文档: https://our.umbraco.org/documentation/reference/routing/surface-controllers

【讨论】:

  • 这并不能真正回答问题。 OP 希望将 Umbraco 路由与自定义路由混合使用到 mvc 控制器。
  • 那你应该用简单的MVC5项目,那为什么需要Umbraco呢?
  • 见开篇的上述cmets。发帖人希望将 Umbraco 包含在现有的 mvc 应用程序中
【解决方案2】:

您仍然可以在 Umbraco SurfaceControllers 旁边使用标准 MVC 控制器,您只需要记住 Umbraco 正在处理路由,因此您必须手动进行路由:

public class ApplicationEventHandler : IApplicationEventHandler
{
    public void OnApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
    {
        RegisterCustomRoutes();
    }

    private static void RegisterCustomRoutes()
    {
        // this is just an example, modify to suit your controllers and actions
        System.Web.Routing.RouteTable.Routes.MapRoute(
           name: "WhateverController",
           url: "Whatever/{action}/{id}",
           defaults: new { controller = "Whatever", action = "DoTheThing", id = UrlParameter.Optional });
    }
}

然后 WhateverController.DoTheThing(int id) 应该可以在 /whatever/dothething/1 访问,就像通常用于 MVC 一样。不幸的是,如果您有很多控制器和操作,这可能需要大量的设置工作,甚至需要更多的维护工作,因此您可能需要找到一种更简单的方法来批量生成这些路由。

【讨论】:

    猜你喜欢
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    相关资源
    最近更新 更多