Umbraco表面控制器内部v6项目

时间:2013-08-28 08:17:33

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

我在我的Umbraco应用程序中实现了一个Surface控制器(v6)但是,它不起作用。

这是简单的Hello World课程:

public class MySurfaceController : Umbraco.Web.Mvc.SurfaceController
{
    [HttpGet]
    public ActionResult Index()
    {
        return Content("hello world");
    }
}

不幸的是,每当我访问它时,都会收到HTTP 404错误。我尝试了以下网址:

  • /一把umbraco /表面/我的
  • /一把umbraco /表面/ mysurface
  • /一把umbraco /表面/ mysurfacecontroller
  • /一把umbraco /表面/我/索引
  • /一把umbraco /表面/ mysurface /索引
  • /一把umbraco /表面/ mysurfacecontroller /索引

我的Global.asax继承自Umbraco.Web.UmbracoApplication

有没有人对我可能做错了什么有任何建议?

谢谢

1 个答案:

答案 0 :(得分:1)

这里有几件事:

您不再需要结束控制器“SurfaceController”的名称,只需从SurfaceController继承。

如果您的控制器被称为/Umbraco/surface/,您也不需要路径前缀/my/,您应该能够在MyController访问Index()操作。< / p>

修改

假设您要从控制器提供页面,则需要修改web.config AppSetting条目以包含控制器的路径

<add key="umbracoReservedPaths" value="~/umbraco,~/install/,~/my" />

您还需要从global.asax注册专门为您的控制器设置的路由:

routes.MapRoute(
    name: "Default",
    url: "my/{action}/{id}",
    defaults: new { action = "Index", id = UrlParameter.Optional }
);

重要的是,这是特定于您的控制器,因为您不希望它覆盖任何Umbraco路由。