Umbraco 10 - MapControllerRoute 和 RenderController

问题描述 投票:0回答:1

我正在创建一个 Umbraco 10 站点并尝试为 RenderController 添加路由。但是当我尝试路由的 URL 时,我不断收到 404,页面未找到错误。

在 startup.cs 里面我有以下代码:


             .WithEndpoints(u =>
             {
                u.EndpointRouteBuilder.MapControllerRoute(
                   name: "Article-List",
                   pattern: "/NewsArticle/Show/{category}",
                   new { Controller = "NewsArticle", Action = "Show"}
                   ); 
                // Normal Umbraco endpoints
              });

渲染控制器具有以下代码:

   public class NewsArticleController : RenderController
   {
      private readonly IUmbracoContextAccessor _umbracoContextAccessor;
      private readonly UmbracoHelper _umbracoHelper;

      public NewsArticleController(ILogger<RenderController> logger, ICompositeViewEngine compositeViewEngine, IUmbracoContextAccessor umbracoContextAccessor, UmbracoHelper umbracoHelper)
        : base(logger, compositeViewEngine, umbracoContextAccessor)
      {
         _umbracoContextAccessor = umbracoContextAccessor;
         _umbracoHelper = umbracoHelper;
      }

      [HttpGet]
      [Route("/NewsArticle/Show/{category}")]
      public IActionResult Show(String category)
      {
            return Content("Hello world - looking for" + category);
      }
}

尝试此 URL https://localhost:44381/NewsArticle/Show/financials 会导致 404 页面未找到错误。

PS - 我正在使用 Visual Studio 2022 社区。

routes umbraco
1个回答
1
投票

我不确定你到底想实现什么:自定义控制器(在 Umbraco 管道和路由之外)或标准视图控制器(在 Umbraco 管道和路由内部)。在谈论 Umbraco 管道内的控制器时,有许多变体:渲染、表面、api、劫持。渲染变体用于返回普通的旧视图,这就是您想要的样子。

对于标准控制器

参见:https://docs.umbraco.com/umbraco-cms/v/10.latest-lts/implementation/default-routing/controller-selection(默认控制器操作)。

默认页面的路由应该类似于 https://localhost:44381/NewsArticle/ 或 https://localhost:44381/NewsArticle/index,这或多或少是你所拥有的。

我会在索引(默认)页面上使用它,然后为 Show 添加额外的端点:https://localhost:44381/NewsArticle/Show。请注意,我不希望为此使用

[Route()]
属性。

对于更复杂的控制器

WithEndpoints 和 startup.cs 的用法向我表明您可能需要自定义路由。

如果你想要自定义路由,或者 Umbraco 之外的东西,请参见 https://docs.umbraco.com/umbraco-cms/v/10.latest-lts/reference/routing/custom-routes.

请注意,您的示例似乎与 https://docs.umbraco.com/umbraco-cms/v/10.latest-lts/reference/routing/custom-routes#where-to 中的代码不太匹配-put-your-routing-logic 根据 // Normal Umbraco 端点 应该去的地方。您可能需要重新调整订单才能正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.