ASP.NET MVC - URL路由参数问题

时间:2011-05-17 19:11:53

标签: asp.net-mvc url-routing asp.net-mvc-routing

我有这条路线声明:

routes.MapRoute(
                // Route name
                "WhiteLabelPartners",
                // URL with parameters
                "partners/{partnerName}/{controller}/{action}/{id}",
                // Parameter defaults
                new { partnerName = "", controller = "", action = "index", id = UrlParameter.Optional }
                );

当我尝试这个网址时:

/partners/a/savings/index/1

......它运作正常。 Savings控制器的索引操作被命中。

但是,当我尝试这个网址时:

/partners/a/savings/index

我得到了“未找到”。

如果我有{id}参数的UrlParameter.Optional,为什么还需要它呢?

有人可以解释一下吗?如何使{id}参数可选?

由于

1 个答案:

答案 0 :(得分:0)

确保您的索引操作不期望参数。

如果在您的控制器上,您的Index操作如下所示: 公共ActionResult索引(int id)

它需要在ID字段中传递一个参数,因为您没有在路径中提供默认值。这可能就是为什么你得到'未找到'的错误,因为它无法找到匹配的动作。它期待:

公共ActionResult索引()

您可以在没有参数的情况下保留Index()动作,并在Index()动作中,通过以下方式检索传入的'id'参数的值,如果有的话:

RouteData.Values [“id”]

使用它。 如果这对您有用,请告诉我们。

(注意:我想发布像tejs这样的评论(但是没有看到添加评论的链接?!),要求你在控制器上显示你的索引方法签名,所以请在问题中加入。)