我有这条路线声明:
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}参数可选?
由于
答案 0 :(得分:0)
确保您的索引操作不期望参数。
如果在您的控制器上,您的Index操作如下所示: 公共ActionResult索引(int id)
它需要在ID字段中传递一个参数,因为您没有在路径中提供默认值。这可能就是为什么你得到'未找到'的错误,因为它无法找到匹配的动作。它期待:
公共ActionResult索引()
您可以在没有参数的情况下保留Index()动作,并在Index()动作中,通过以下方式检索传入的'id'参数的值,如果有的话:
RouteData.Values [“id”]
使用它。 如果这对您有用,请告诉我们。
(注意:我想发布像tejs这样的评论(但是没有看到添加评论的链接?!),要求你在控制器上显示你的索引方法签名,所以请在问题中加入。)