创建自定义控制器并查看错误"未找到页面,没有umbraco文档与url'/ home2/index'匹配."

use*_*510 3 umbraco umbraco7

我是Umbraco的新手并做了一些测试/学习工作.

我创建了一个名为Home2的新控制器,请注意我没有Home2的doc类型.我想创建可以与Umbraco一起使用的非Umbraco视图/页面.在运行时我得到以下错误:

在此输入图像描述

下面是我的Controller和视图代码,请指导我应该做些什么来创建可以与Umbraco一起使用的自定义控制器和视图?即使非Umbraco类型,我还需要创建文档类型吗?

控制器:

namespace Web.Controllers {public class Home2Controller:Umbraco.Web.Mvc.RenderMvcController {// // GET:/ Home /

    public override ActionResult Index(RenderModel model)
    {
        //Do some stuff here, then return the base method
        return base.Index(model);
    }

}
Run Code Online (Sandbox Code Playgroud)

}

视图:

@ {ViewBag.Title ="索引"; }

指数

您好,欢迎来到我们的页面....

谢谢

小智 6

许多人对umbraco中的路由感到困惑,这是SO上的一个常见问题.看看我的最新答案:我可以更改内容的URL吗?

首先,您需要在应用程序启动时注册您的路线.创建一个继承自Umbraco.Core.ApplicationEventHandler的新类.然后覆盖ApplicationStarted以添加规则.像这样:

protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
    //Custom route
    RouteTable.Routes.MapRoute(
    "SomeName",
    "Something/{action}/{id}",
    new
    {
        controller = "MyController",
        action = "Index",
        id = UrlParameter.Optional
    });
}
Run Code Online (Sandbox Code Playgroud)

然后创建一个继承自RenderMvcController的控制器(不是表面控制器.表面和渲染控制器用于两种不同的东西):http://our.umbraco.org/documentation/reference/Templating/Mvc/surface-controllers)

public class MyController : Umbraco.Web.Mvc.RenderMvcController
{
    public override ActionResult Index(RenderModel model)
    {
        //Do your db stuff here...
        return PartialView("~/Views/Partials/MyView.cshtml", model);
    }
}
Run Code Online (Sandbox Code Playgroud)