gpt4 book ai didi

c# - 将 Rails 路由转换为 Asp.net MVC 路由

转载 作者:行者123 更新时间:2023-11-30 17:42:45 24 4
gpt4 key购买 nike

我正在将 Rails 应用程序的路由转换为与替换的 Asp.net MVC 应用程序一起使用。我们需要维护所有旧网址。大多数路线都可以毫无问题地转换 - 但我有点难以弄清楚如何处理这条路线......

实际的url都是这样连字符的

site.com/agent-name-ratings-city-name-123

Rails 路线定义为

get '/:agent_name-ratings-:city-:id' => 'agents#show'

我只需要将“agent-name”作为 {id} 传递给 Asp {agents} Controller 。我的问题是如何处理 url 末尾的城市名称和 ID...?

我试过以下方法:

routes.MapRoute(name: "agents", url: "{id}-ratings-{city}-{agent_id}", defaults: new { controller = "Agents", action = "Profiles", id = "{id}" });

这有效,但是 - 它似乎弄乱了 @Html.ActionLink...

@Html.ActionLink("View",  "Profiles", "Agents",  new { id = item.first_name + "-" + item.last_name }, null)

它最终指向...

site.com/Agents/Profiles/agent-name

这是一个有效的 url,只是不是我们想要的。

那么 - 如何以所需的格式获取此链接?

site.com/agent-name-ratings-city-123

城市名称和 ID 都可以从“项目”对象中获得。 “收视率”这个词是一个常数。我只是不确定如何将它们混合在一起。

如有任何建议,我们将不胜感激!

最佳答案

主要问题是您在路由中指定了 Url 参数,但是它们没有出现在您的 Html.ActionLink 定义中,因此默认路由被使用,因为没有明确的匹配。

尝试以下操作:

@Html.ActionLink("View",  "Profiles", "Agents",  new { id = item.first_name + "-" + item.last_name, city = item.city, agent_id = item.agent_id }, null)

否则,将 UrlParameter.Optional 添加到 map 路由中的 2 个附加字段。

routes.MapRoute(
name: "agents",
url: "{id}-ratings-{city}-{agent_id}",
defaults: new { controller = "Agents", action = "Profiles", id = "{id}", city = UrlParameter.Optional, agent_id = UrlParameter.Optional });

但是,如果您仅在操作链接中指定 id 部分,则将参数设为可选将导致 URL 格式错误。例如site.com/agent-name-ratings--

编辑

同时使 Url 参数成为可选参数很可能会破坏在参数中指定 id 的其他路由。然而,这可能会起作用,并且不会破坏太多东西,但仍然会有格式错误的 URL:

@Html.ActionLink("View", "Profiles", "Agents", new { agent_name = "agent" + "-" + "name" }, null)

routes.MapRoute(
name: "agents",
url: "{agent_name}-ratings-{city}-{agent_id}",
defaults: new { controller = "Agents", action = "Profiles", agent_name = "{agent_name}", city = UrlParameter.Optional, agent_id = UrlParameter.Optional });

关于c# - 将 Rails 路由转换为 Asp.net MVC 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31688408/

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