gpt4 book ai didi

asp.net-mvc-4 - 将 Url.RouteUrl() 与区域中的路线名称一起使用

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

作为旁注,我了解整个 ambiguous controller names问题并使用命名空间来使我的路线正常工作,所以我认为这不是问题。

到目前为止,我有我的项目级 Controller ,然后是具有以下注册的用户区:

public class UserAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "User";
}
}

public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"UserHome",
"User/{id}",
new { action = "Index", controller = "Home", id = 0 },
new { controller = @"Home", id = @"\d+" }
);

context.MapRoute(
"UserDefault",
"User/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}

“UserHome”路线在那里,所以我可以允许路线 /User/5/User/Home/Index/5看起来更干净的IMO。

理想情况下,我想使用 Url.RouteUrl("UserHome", new { id = 5 }) , 在其他地方生成路线,但这总是返回空白或给我一个异常说它找不到路线名称,这显然是存在的。

但是,当我使用 Url.RouteUrl("UserHome", new { controller = "Home", action = "Index", id = 5 })它没有问题。

当路由映射中已经有默认值时,为什么我必须指定 Action 和 Controller ?我错过了什么?

最佳答案

我可以确认,至少使用 .NET 4.5.1 和 MVC 5.2.2,此行为已得到修复,现在可以使用 Url.RouteUrl("UserHome", new { id = 5 }) .

看起来这是自我发帖以来已修复的错误。

添加这个作为答案,因为虽然 TSmith 的解决方案可以工作,但现在有了修复程序,您不再需要做额外的工作。

关于asp.net-mvc-4 - 将 Url.RouteUrl() 与区域中的路线名称一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17734684/

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