0

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

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

太好了,我有一种方法可以在我的表面控制器中处理此请求,并且我可以为每个结果创建一个 Html.ActionLink,当单击时使用 id 参数触发我的控制器操作。

问题- 当每个链接被点击时,被点击的 url 是

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,我也不希望有两个控制器来处理来自同一部分的内容。

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

如果有人可以帮助我,我将永远感激不尽。

4

1 回答 1

0

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

但是,在我看来,这并不是很好,如果有人有其他解决方案,我仍然会非常感激。

于 2014-02-21T13:39:10.990 回答