gpt4 book ai didi

asp.net-mvc - 没有 Controller 和操作的网址

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:29:17 24 4
gpt4 key购买 nike

我正在制作 asp.net mvc 应用程序,我有下一个问题。例如,我需要生成像这样的 url www.something.com/abc,其中 abc 是产品 ID,www.something.com/def 其中 def 是公司 ID。

谁能给我看一些带有这样的路由链接的代码?

@Html.RouteLink("Sample link 1", "routeName 1", 
new {controller = "Home", action = "action name 1", parameter="abc" })

@Html.RouteLink("Sample link 2", "routeName 2",
new {controller = "Home", action = "action name 2", parameter="def" })

只是为了进一步澄清我的问题,例如:

这是路由系统

  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "aaaaa",
url: "{id}",
defaults: new { controller = "Home2", action = "Index2" }
);
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "bbbb",
url: "{id}",
defaults: new { controller = "Home3", action = "Index2" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

这些是路由链接

@Html.RouteLink("bbbb", "aaaaa",new { id = 555 })
@Html.RouteLink("bbbb", "bbbb", new { id = 6666666, controller="Home3"})

它们都将我重定向到相同的 Action Controller home2 和 Action Index2。

但是我指定了第一个使用“aaaaa”和第二个使用“bbbb”的路由

我还在第二个中指定了不同的 Controller 。

最佳答案

您不能有 2 个外观相同的网址:

被路由到 2 个不同的 Controller 操作。路由引擎绝对无法消除它们之间的歧义。当收到这种形式的请求时,路由引擎会按照它们定义的顺序评估您的路由,并匹配这个:

routes.MapRoute(
name: "aaaaa",
url: "{id}",
defaults: new { controller = "Home2", action = "Index2" }
);

这就是执行Home2 Controller 的原因。您应该区分生成 url 的概念(使用 Html.RouteLink 帮助程序),您可以在其中指定路由名称和评估路由。

如果您希望能够消除这 2 个网址之间的歧义,您将需要使用约束。例如:

routes.MapRoute(
name: "aaaaa",
url: "{id}",
defaults: new { controller = "Home2", action = "Index2" },
constraints: new { id = @"\d{1,3}" }
);

routes.MapRoute(
name: "bbbb",
url: "{id}",
defaults: new { controller = "Home3", action = "Index2" },
constraints: new { id = @"\d{4,10}" }
);

在此示例中,第一条路线接受 1 到 3 位数字的 ID,而第二条路线接受 4 到 10 位数字的 ID。

关于asp.net-mvc - 没有 Controller 和操作的网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17391981/

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