我已经通过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一样。不幸的是,如果您有很多控制器和操作,这可能是要进行的很多工作,甚至可以维护更多工作,因此您可能需要找到一种更简单的方法来批量生成这些路线。