我在FRESH mvc5项目中通过nuget安装了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控制器中使用它。
答案 0 :(得分:0)
Umbraco无法使用您必须使用SurfaceController继承的简单控制器。因为它适用于像这样的Surface Controller
public class AccountController : SurfaceController
{
public ActionResult Dashboard(RenderModel model, int? Id)
{
return Content("ok");
}
}
您可以使用以下网址调用此方法 /一把umbraco /表面/ {controllername} / {行动} / {ID}
见文档: https://our.umbraco.org/documentation/reference/routing/surface-controllers
答案 1 :(得分:0)
您仍然可以将标准MVC控制器与Umbraco SurfaceController一起使用,只需记住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通常那样。不幸的是,如果您有许多控制器和动作,则可能需要进行大量设置并需要维护,因此,您可能需要找到一种更简便的方法来批量生成这些路由。