gpt4 book ai didi

c# - asp.net mvc 在同一 Controller 上路由不同的操作

转载 作者:行者123 更新时间:2023-11-30 16:24:35 25 4
gpt4 key购买 nike

我有一个名为 Raportare 的 Controller ,它有两个操作:ReportAReportB。两者都根据提供的参数返回一个 excel 文件。

public ActionResult ReportA(int? month, int? year)
{
...
}
public ActionResult ReportB(int? month, int? year)
{
...
}

我的 global.asax 具有以下路由规则:

routes.MapRoute(
"ReportA",
"{Raportare}/{ReportA}/{month}/{year}",
new { controller = "Raportare", action = "ReportA", month = UrlParameter.Optional, year = UrlParameter.Optional});

routes.MapRoute(
"ReportB",
"{Raportare}/{ReportB}/{month}/{year}",
new { controller = "Raportare", action = "ReportB", month = UrlParameter.Optional, year = UrlParameter.Optional });

但是,当我访问 mysite.com/Raportare/ReportB/5/2012 时,它返回了 ReportA 文件。如果我去 mysite.com/Raportare/ReportB?month=5&year=2012,它工作正常。可能我在路由规则中做错了什么,但我无法弄清楚。

最佳答案

您不需要为每个操作添加路由 - 它们像模板一样工作,第三个参数只是默认值。

routes.MapRoute(
"reports",
"Raportare/{action}/{month}/{year}",
new {
controller = "Raportare",
action = "ReportA",
month = UrlParameter.Optional,
year = UrlParameter.Optional
}
);

将此放在 Global.asax.cs 中的默认规则之前,否则默认值可能首先匹配。

然后 mysite.com/Raportare/ReportB/5/2012 将调用 ReportB 操作,因为它已在 url 中指定。

mysite.com/Raportare 将调用 ReportA,因为这是默认操作。

关于c# - asp.net mvc 在同一 Controller 上路由不同的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10716225/

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