【问题标题】:How to sucessfully link to another cms page in Umbraco如何成功链接到 Umbraco 中的另一个 cms 页面
【发布时间】:2014-02-21 09:00:57
【问题描述】:

我对 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 为 null 时无法渲染宏。

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-17
      • 1970-01-01
      • 2019-11-19
      • 2020-05-13
      • 2014-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多