2014-06-29 89 views
6

随着新的MVC属性路由,我知道你可以分配多个Route属性到一个单一的ActionResult,但我正在寻找一种方法在RoutePrefix级别做同样的事情。我有一个控制器,在每一个动作,应该由三条路线可访问:每个控制器使用MVC属性路由的多个RoutePrefix?

/Games/{Title}/Characters/{Route} /Books/{Title}/Characters/{Route} /Cinema/{Title}/Characters/{Route}

我试图把三个独立RoutePrefix属性,但我得到的错误Deuplace RoutePrefix attribute。如果我尝试使用逗号分隔的列表,我会得到Best override method for does not contain a constructor that takes 3 arguments

是否可以设置RoutePrefix,以便我需要我的控制器的三条路线?

回答

13

运行一堆测试我发现我可以将3 Route属性添加到控制器级别,它按我想要的方式工作。

编辑:更好的方法来做到这一点,我发现是使用正则表达式匹配方法

[RoutePrefix("{Type:regex(Games|Cinema|Books)}/{SectionRoute}/Character/")]

+0

太守......让我很快乐... – microchip78

+0

你会如何做没有一个正则表达式? 我可以只添加多个属性行吗? '[RoutePrefix(“prefix1”)] [RoutePrefix(“prefix2”)]' – Zapnologica

+1

@Zapnologica自从我这样做了一段时间,但如果我记得正确的话,你要么像你的例子那样做,要么用逗号分开它们,像'[RoutePrefix (“prefix1”),RoutePrefix(“prefix2”)]'尝试它们两个,看看会发生什么 – Matthew

相关问题