簡體   English   中英

ASP.NET Core 2.1中的重定向路由

[英]Redirect routing in ASP.NET Core 2.1

我有一個帶有一些控制器的主項目,例如HomeController包含一個動作“ Index”。 該操作可通過www.mysite.com/home/index進行。

然后,我有另一個名為“插件”的項目 ,該項目在主項目中被引用。 有一個控制器,例如CustomerController 該控制器內的動作包含路由屬性“ [Route(” edit“)]”“ 該操作可通過www.mysite.com/customer/edit進行 但是我希望可以通過包含項目名稱(或其他名稱)的www.mysite.com/plugin/customer/edit來執行此操作。

如何在不為 “插件”項目中的每個控制器設置路由屬性的情況下執行此操作?

順便說一句..如果有必要,我正在使用NopCommerce 4.1。

這是區域的方案。

1)在您的插件內部創建文件夾結構

Areas
..Plugin
....Controllers
....Views

2)在內部控制器中創建基礎插件控制器“ PluginController”,在其中設置Area屬性

[Area("Plugin")]
public class PluginController : Controller
{
    ...
}

3)讓您所有的插件控制器都繼承自PluginController

public class CustomerController : PluginController
{
    ...
}

4)在路線構建器中添加對區域的支持

app.UseMvc(routes =>
{
    routes.MapRoute(
    name: "defaultWithArea",
    template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");

    routes.MapRoute(
    name: "default",
    template: "{controller=Home}/{action=Index}/{id?}");
});

現在,您插件中的所有操作都將需要www.mysite.com/plugin/ ...

我還要注意,如果您希望從插件外部檢索操作網址,則需要指定控制器的區域,如下所示:

@Url.Action("Edit", "Customer", new { Area = "Plugin" })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM