Umbraco路线与正常的MVC路线一起



我已经通过nuget在一个新鲜的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控制器工作好像什么都没发生。ID在我的MVC控制器中使用。

umbraco将无法与SurfaceController继承的简单控制器一起使用。当它与这样的表面控制器配合使用

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

您可以使用以下URL调用此Methode/umbraco/surface/{controlerName}/{action}/{id}

请参阅文档:https://our.umbraco.org/documentation/reference/Routing/Surface-controllers

您仍然可以与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)应该在/whthing/dothething/1处访问,就像通常对MVC一样。不幸的是,如果您有很多控制器和操作,这可能是要进行的很多工作,甚至可以维护更多工作,因此您可能需要找到一种更简单的方法来批量生成这些路线。

相关内容

  • 没有找到相关文章

最新更新