我遇到了一种情况,即在需要时没有生成“完全合格”的路线。以下代码演示了该问题:
var junk = Url.Action("Index2", "Reference", new { area = "Admin" });
junk = Url.Action("Index", "Reference", new { area = "Admin", memberID = 47 });
第一次调用 Url.Action() 会产生/Admin/Reference/Index2。第二个调用产生/Admin/Reference,我猜是因为“索引”是默认标识符。
不幸的是,路由映射(我没有修改它,因为它是由 VS2010 生成的)当然会将第二条路由处理为对根区域中 Admin 控制器上的 Reference 方法的调用。路由解析器无法知道第二个链接实际上是用于管理区域中引用控制器的索引处理程序的。
一个明显的解决方法是在区域内的控制器中没有 Index 方法。但这似乎很难看。我对更好/更强大的方法感兴趣。