我使用默认路由定义:
{controller}/{action}/{id}
哪里id = UrlParameter.Optional
。据我了解,这意味着当id
不是 URL 的一部分时,该路由值将不存在于RouteValues
字典中。
所以这似乎也完全有可能(都是 GET):
public ActionResult Index() { ... } // handle URLs: controller/action
public ActionResult Index(int id) { ... } // handle URLs: controller/action/id
当id
缺少时,将执行第一个动作,但当id
存在时,将执行第二个动作。很好,但它不起作用。它无法解决操作。
我怎样才能做到这一点?
我正在考虑编写一个自定义操作方法选择器属性,例如:
[RequiresRouteValue(string valueName)]
这将使使用这种动作方法成为可能。但这是唯一的方法吗?
有什么内置的东西我可以坚持吗?