[英]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.