|
|
1
176
MVC不支持仅基于签名的方法重载,因此这将失败:
然而,它 做 基于属性的支持方法重载:
在上面的示例中,属性简单地说“如果键 XXX 请求中存在。“如果路由(controllerContext.requestContext)中包含的信息更适合您的目的,您还可以按该信息进行筛选。 |
|
|
2
7
路线中的参数
您的itemID是否符合可以通过regex匹配的模式?如果是这样,那么您可以在路由中添加一个约束,这样只有与模式匹配的URL才会被标识为包含一个itemID。 如果您的itemID只包含数字,那么这将起作用:
编辑:还可以向
编辑2:另外,由于您的第一个操作只是重定向到您的第二个操作,您可以通过重命名第一个操作来消除一些歧义。
然后在路由中指定操作名称以强制调用正确的方法:
|
|
|
3
6
另一种方法是重命名其中一个方法,这样就不会发生冲突。例如
见 http://www.asp.net/mvc/tutorials/getting-started-with-mvc3-part9-cs |
|
|
4
3
最近我利用这个机会改进了@levi的答案,以支持我必须处理的更广泛的场景,例如:多参数支持,匹配其中任何一个(而不是全部),甚至不匹配其中任何一个。 下面是我现在使用的属性:
有关进一步的信息和如何实现示例,请查看 this blog post 我就这个话题写的。 |
|
|
5
0
考虑使用MVC控件测试路由库来测试路由
|