gpt4 book ai didi

asp.net-core - 从 Asp.Net Core 中的 RouteCollection 中删除路由并添加具有相同路由名称的新路由 (nopCommerce-4.00)

转载 作者:行者123 更新时间:2023-12-01 01:57:19 25 4
gpt4 key购买 nike

我想从 RouteCollection 中删除现有路由,并希望通过插件在 nopCommerce 4.00 中添加具有相同路由名称的新路由

现有路线名称:

//home page
routeBuilder.MapLocalizedRoute("HomePage", "",
new { controller = "Home", action = "Index" });

我想换成

   routeBuilder.MapLocalizedRoute("HomePage", "",
new { controller = "CustomPage", action = "Homepage" });

我尝试了几种方法,但都没有运气。

最佳答案

在我的例子中,我必须替换 robots.txt 生成。我在我的插件中创建了一个新的公共(public) Controller ,并将原始操作复制到这里:

public class MiscCommonController : BasePublicController
{
#region Fields
private readonly ICommonModelFactory _commonModelFactory;
#endregion Fields

#region Ctor
public MiscCommonController(
ICommonModelFactory commonModelFactory
)
{
this._commonModelFactory = commonModelFactory;
}
#endregion Ctor

#region Methods
//robots.txt file
//available even when a store is closed
[CheckAccessClosedStore(true)]
//available even when navigation is not allowed
[CheckAccessPublicStore(true)]
public virtual IActionResult RobotsTextFile()
{
var robotsFileContent = _commonModelFactory.PrepareRobotsTextFile();
return Content(robotsFileContent, MimeTypes.TextPlain);
}
#endregion Methods
}

在此之后,我为我的插件创建了一个 RouteProvider,并将原来的路由替换为我自己的路由。

public partial class RouteProvider : IRouteProvider
{
/// <summary>
/// Gets a priority of route provider
/// </summary>
public int Priority => -1;

/// <summary>
/// Register routes
/// </summary>
/// <param name="routeBuilder">Route builder</param>
public void RegisterRoutes(IRouteBuilder routeBuilder)
{
Route route = null;

foreach (Route item in routeBuilder.Routes)
{
if (item.Name == "robots.txt")
{
route = item;
break;
}
}

if (route != null) routeBuilder.Routes.Remove(route);

routeBuilder.MapRoute(
"robots.txt",
"robots.txt",
new { controller = "MiscCommon", action = "RobotsTextFile" }
);
}
}

就这些。

在这个实现之后,路由工作正常,get 请求落在我自己的 Controller 中,就像原来的一样。

现在,我可以用自己的逻辑替换生成逻辑。

希望对你有帮助。

关于asp.net-core - 从 Asp.Net Core 中的 RouteCollection 中删除路由并添加具有相同路由名称的新路由 (nopCommerce-4.00),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51091247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com