gpt4 book ai didi

asp.net-mvc - 具有不同参数名称的 Asp.Net 路由

转载 作者:行者123 更新时间:2023-12-01 10:09:36 29 4
gpt4 key购买 nike

我正在尝试映射某些路线,以便自动生成的网址看起来像Admin/controller/action/param 这两个代码块,@Url.Action("action","controller",new{id="param"})@Url.Action("action","controller",new{type="param"})

我在区域注册中做了如下操作,

context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index",
id = UrlParameter.Optional },
new string[] { "namespaces" });

context.MapRoute(
"Admin_type",
"Admin/{controller}/{action}/{type}",
new { action = "Index",
type = UrlParameter.Optional },
new string[] { "namespaces" });

当参数名是id时,生成的url是预期的,但是当参数名是type时,而不是controller/action/typevalue ,它会生成类似 controller/action/?type=typevalue

的内容

有没有一种方法可以生成类似于 controller/action/typevalue 的 url,从而保持 Admin_default 路由的生成器行为完好无损?

最佳答案

when parameter name is id, url generated is as expected, but when parameter name is type, instead of controller/action/typevalue, it generates something like controller/action/?type=typevalue

发生这种情况是因为第一个路由用于映射 url(id 是可选的)。

您可以尝试为您的路线添加一些约束。我猜你的 id 参数是一个整数, type 参数是一个字符串。在这种情况下,您可以尝试使用以下路线:

context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
new { id = @"\d+" },
new string[] { "namespaces" });

context.MapRoute(
"Admin_type",
"Admin/{controller}/{action}/{type}",
new { action = "Index", type = UrlParameter.Optional },
new string[] { "namespaces" });

您可以找到有关路线限制的更多信息 here .

关于asp.net-mvc - 具有不同参数名称的 Asp.Net 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6669596/

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