如何成功链接到Umbraco中的另一个cms页面

时间:2014-02-21 09:00:58

标签: asp.net-mvc content-management-system umbraco umbraco6

我对Umbraco越来越感到沮丧。我已经在Umbraco项目上工作了一段时间,我一直无法弄清楚如何解决我的问题(其中之一)。

场景 - 我有一个内容管理页面,在这个页面上,用户可以搜索事物(这些东西来自完全不同的数据库到Umbraco)。这很好,我创建了一个子动作,它加载搜索表单并创建返回结果的控制器方法。但是,每个结果我需要链接到另一个内容管理页面(每个结果的相同内容管理页面),这个页面带有ID,因此我可以将一些动态数据注入内容管理页面。

太棒了,我有一个方法可以在我的表面控制器中处理这个请求,我可以为每个结果创建一个Html.ActionLink,点击它时会使用id参数点击我的控制器动作。

问题 - 点击每个链接时,被点击的网址是

http://localhost:5645/umbraco/surface/{controllername}/{actionname}/?id={id}

但是这个请求在Umbraco上下文之外,所以当我尝试使用以下控制器代码返回任何页面时,我收到以下错误:

    [ActionName("ShowDetials")]
    public ActionResult GetProperty(int propertyId)
    {
        return View("~/Views/TestView.cshtml");
    }

当UmbracoContext.PageId为空时无法呈现宏。

所以我最初的想法是有一个单独的控制器,它继承自Umbraco.Web.Mvc.RenderMvcController并尝试在那里处理请求,但是这引发了其他问题,例如无法使用@ Html.ActionLink链接到一个RenderMvcController,我也不想让两个控制器来处理来自同一部分的内容。

我遇到的其他问题是将自定义模型传递给视图。

如果有人能帮助我,我会永远感激。

1 个答案:

答案 0 :(得分:0)

对于任何有同样问题的开发人员,我能够解决的唯一方法就是拥有两个控制器。一个表面控制器,用于处理搜索表单和页面的初始呈现并显示搜索结果,然后是一个单独的rendermvccontroller,用于处理单击单个结果并显示“详细信息”页面。

然而,我认为这并不是很好,如果有人有其他解决方案,我仍然会非常感激。