【问题标题】:Route Hijacking in umbraco 7umbraco 7 中的路线劫持
【发布时间】:2015-11-20 17:06:52
【问题描述】:

我正在尝试在 Umbraco 7 上设置路由劫持,但收效甚微。 我有一个名为Home.cshtml 的视图,其中的前几行是:

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
    Layout = "Master.cshtml";
}

我添加了一个控制器:

-编辑- 更新问题以包含 Index() 控制器操作。

namespace CLIAUmbraco7.Controllers
{
    public class HomeController : Umbraco.Web.Mvc.RenderMvcController
    {
        public override ActionResult Index(RenderModel model)
        {
            string country = "";

            return base.Index(model);
        }
        public ActionResult Index()
        {
            return View();
        }     
    }

Layout 行上设置断点会在站点加载之前捕获它,但永远不会调用HomeController。知道我做错了什么吗?

【问题讨论】:

    标签: c# asp.net-mvc umbraco7


    【解决方案1】:

    默认需要调用控制器

    [TheDocumentType别名YouWantToHijack]控制器

    如果您的文档类型不是“主页”,则不会被拦截。

    【讨论】:

    • 是的,这可能是问题所在。我添加到答案中的link 包含以下信息:用一个例子来演示最容易:假设您有一个名为“Home”的文档类型。您可以在名为“HomeController”的 MVC Web 项目中创建一个自定义的本地声明控制器,并确保它继承自 Umbraco.Web.Mvc.RenderMvcController,现在所有文档类型为“Home”的页面都将通过您的自定义控制器进行路由。
    • 该文档是一个名为 home.cshtml 的视图,但在 Umbraco 中,该类型显示为 Home Page
    • Craig 指的是位于 Umbraco 中的页面的 文档类型 - 在 CMS 中遍历您的页面(主页)并转到属性选项卡以查看与该节点关联的文档类型的名称是什么。
    • 类型列为Home Page
    • 现在已将Document type 设置为Home,但仍然没有乐趣。
    【解决方案2】:

    您缺少Index() 控制器操作。您的控制器应如下所示:

    public class HomeController : Umbraco.Web.Mvc.RenderMvcController
    {
        public override ActionResult Index(RenderModel model)
        {
            //Do some stuff here, then return the base method
            return base.Index(model);
        }
    
    }
    

    看看Umbraco website上的文章。

    【讨论】:

    • 谢谢,不管有没有Index(),在网站加载之前仍然不会调用HomeController
    • 我已将其添加到问题中。
    猜你喜欢
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    相关资源
    最近更新 更多