繁体   English   中英

如何在asp.net核心应用中确定应用路由?

[英]How determine application route in asp.net core application?

我的startup.cs文件中有下一个代码:

app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "catalog",
                template: "Catalog/{controller}/{action=Index}/{id?}");

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

当我点击我的链接时:

 <a asp-controller="Products" asp-action="Index">Products</a>

应用程序使用名称为“catalog”的路由,但是我需要名称为“default”的路由。 这个怎么做? 请帮助。 抱歉我的英文不好=)

我建议稍微修改你的路由中间件:

您需要使用MapAreaRoute方法,该方法将告知区域名称和URL格式。

app.UseMvc(routes =>
{
    routes.MapAreaRoute("catalog_route_name", "Catalog",
        "Catalog/{controller}/{action}/{id?}");

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

然后,您需要在控制器上指定Area属性。

namespace MyApp.Namespace1
{
    [Area("Catalog")]
    public class ProductsController : Controller
    {
        public IActionResult AddProduct()
        {
            return View();
        }        
    }
}

完成此更改后,您可以指定区域,如下所示:

    <a asp-area="Catalog" asp-controller="Products" asp-action="Index">
        Catalog/Products/Index
    </a>

这肯定会奏效。

要使default生效,您可以更改顺序

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM