gpt4 book ai didi

c# - 将 RouteLink 与区域一起使用

转载 作者:行者123 更新时间:2023-11-30 20:05:33 28 4
gpt4 key购买 nike

在我的 MVC 应用程序中,我定义了一个默认路由:

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new []{ "Demo.Controllers" }
);

我创建了一个名为 Admin 的新区域,并在 AdminAreaRegistration 类中添加了一个路由:

public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", controller = "Home", id = UrlParameter.Optional }
);
}

在我的主要 _Layout 文件中,我尝试执行以下操作:

@Html.RouteLink("Admin", "Admin_default")

它仅在某些情况下有效(例如,如果我已经在管理页面中)。如果我在我网站的/Home/About 部分,那么 URL 会像这样生成:

/Admin/Home/About

如果我在 Home Controller 的索引操作中(在主要区域,而不是管理区域),那么 URL 会像这样生成:

/Admin

为什么 RouteLink 不能像我认为的那样使用 MVC 中的区域?

最佳答案

@Html.RouteLink("Admin", "Admin_default") 此路由使用名称为 Admin_default 的路由,因此它将始终使用该路由生成网址。

@Html.RouteLink("Admin", "Admin_default", new { controller = "Home", action = "Index"})

当您不指定诸如路由值之类的东西时,大多数 MVC 都会使用当前存在的值。在这种情况下,由于 actioncontroller 值为空,它会查看 RouteValues 并检查它们是否存在以及它们是否“我们发现他们改用那里找到的值。

这有时很有用。例如,如果您希望使用页面上使用的相同值填充 {id}

网址:/home/edit/1701

@Html.RouteLink("Refresh", "Default") 将产生完全相同的 url - 如果需要,您可以指定覆盖。

关于c# - 将 RouteLink 与区域一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11264002/

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