ASP.NET MVC - 路由和 UrlHelper

发布于 2024-07-12 05:44:50 字数 844 浏览 6 评论 0原文

我有以下路线

routes.MapRoute(
    "GigDayListings",                                   // Route name
    "gig/list/{year}/{month}/{day}",                    // URL with parameters
    new { controller = "Gig", action = "List" },
    new
    {
        year = @"^[0-9]+$",
        month = @"^[0-9]+$",
        day = @"^[0-9]+$"
    }  // Parameter defaults
);

当我访问 URL 时

gig/list/2009/01/01

该路线完美匹配并且我的操作被调用。

在我看来,我有一个助手,它执行以下操作:

var urlHelper = new UrlHelper(ViewContext);
string url = urlHelper.RouteUrl(ViewContext.RouteData.Values);

生成的字符串是:

http://localhost:3539/gig/list?year=2005&month=01&day=01

为什么不是

http://localhost:3539/gig/list/2005/01/01

我做错了什么?

I have the following route

routes.MapRoute(
    "GigDayListings",                                   // Route name
    "gig/list/{year}/{month}/{day}",                    // URL with parameters
    new { controller = "Gig", action = "List" },
    new
    {
        year = @"^[0-9]+$",
        month = @"^[0-9]+$",
        day = @"^[0-9]+$"
    }  // Parameter defaults
);

When I visit the URL

gig/list/2009/01/01

This route matches perfectly and my action is called.

Inside my view I have a helper which does the following:

var urlHelper = new UrlHelper(ViewContext);
string url = urlHelper.RouteUrl(ViewContext.RouteData.Values);

The string generated is:

http://localhost:3539/gig/list?year=2005&month=01&day=01

Why is it not

http://localhost:3539/gig/list/2005/01/01

What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苏大泽ㄣ 2024-07-19 05:44:50

我认为您的问题是您没有在通话中指定路线名称。 尝试使用

UrlHelper.RouteUrl(**"GigDayListings"**, ViewContext.RouteData.Values); 

带有路由名称的重载。

干杯!

I think your problem is that you didn't specify the route name in your call. Try to use

UrlHelper.RouteUrl(**"GigDayListings"**, ViewContext.RouteData.Values); 

overload with route name.

Cheers!

你爱我像她 2024-07-19 05:44:50

您是否检查过,当您提供 gig/list/2008/01/01 时,它实际上正在使用 GigDayListings 路线? 也许它正在使用不同的

Have you checked that when you supply gig/list/2008/01/01 that it is actually using the GigDayListings route? Maybe it's using a different one

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文