我是Umbraco的新手,正在做一些测试/学习工作。
我创建了一个名为Home2的新控制器,请注意我没有Home2的文档类型。我想创建可以与Umbraco一起使用的非Umbraco视图/页面。在跑步时我得到以下错误:
下面是我的Controller和视图代码,请指导我应该做些什么来创建可以与Umbraco一起使用的自定义控制器和视图?即使是非Umbraco类型,我还需要创建文档类型吗?
控制器:
命名空间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);
}
}
}
查看:
@ { ViewBag.Title ="索引&#34 ;; }
您好,欢迎来到我们的页面....
由于
答案 0 :(得分:6)
许多人对umbraco的路由感到困惑,这是一个常见的问题。看看我的最新答案:Can I change URL of content?
首先,您需要在应用启动时注册您的路线。创建一个继承自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
});
}
然后创建一个继承自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);
}
}
答案 1 :(得分:2)
如果要创建未在Umbraco中处理的自定义页面,则需要将其添加到web.config中的umbracoReservedUrls列表中,例如
<add key="umbracoReservedUrls" value="~/config/splashes/booting.aspx,~/install/default.aspx,~/config/splashes/noNodes.aspx,~/Home2/Index" />
答案 2 :(得分:0)
Umbraco负责所有路由,因此您的页面必须存在于后台的内容部分,即使它不是umbraco相关的。因此,您首先创建一个文档类型,然后创建一个模板。完成后,您可以在内容部分添加页面。
然后,您可以查看该页面(转到内容页面的属性,然后单击链接到文档)。此时,您可以根据需要添加自定义控制器,它应该来自RenderMvcController或SurfaceController(如果您确实形成帖子)