gpt4 book ai didi

c# - url.link 错误 : A route named 'Default' could not be found in the route collection. 参数名称:name

转载 作者:行者123 更新时间:2023-12-05 01:45:58 25 4
gpt4 key购买 nike

我正在开发一个 MVC 应用程序并尝试使用 Url.Link 函数来构建一个有效的 url。

这里是一些相关的代码:

RouteConfig.cs

routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

我试图在 Controller 中到达的路由(该函数的名称是 Manage - 它接受一个名为 id 的 guid 类型的参数:

[HttpGet]
[Route("manage/{id:guid}")]

调用Url.Link():

Url.Link("Default", new { Controller = "Users", Action = "Manage", id = aggregateId });

我试过这样命名属性:

[HttpGet]
[Route("manage/{id:guid}", Name="ManageUserRoute")]

然后像这样调用 Url.Link():

url = Url.Link("ManageUserRoute", new { id = aggregateId });

我在使用这两种方法时都在标题中遇到了同样的错误。我该如何纠正这个问题?

最佳答案

您的示例混合了属性路由和基于约定的路由。

假设操作是 UsersController 中的 ActionResult Manage(Guid id),您可以通过基于约定的路由构建链接,例如

Url.Link("Default", new { controller = "Users", action = "Manage", id = aggregateId });

请注意 controlleraction “route values” 的common/lower case 名称网址

更新

经过一番调查后,我还注意到您没有提及这是针对 Web API 而不是 MVC。线索是 UrlHelper 的 MVC 版本中没有 Link 方法。

您很可能会收到该错误,因为 Web api 的默认基于约定的路由是 DefaultAPI 而不是 Default

// Convention-based routing.
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

这就是它无法在 http 路由映射的路由表中找到 Default 路由名称的原因。您需要检查您的 WebApiConfig.cs 文件以了解您的 Web API 的路由。

所以你可能想要

Url.Link("DefaultApi", new { controller = "Users", action = "Manage", id = aggregateId });

关于c# - url.link 错误 : A route named 'Default' could not be found in the route collection. 参数名称:name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39005701/

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