Dai*_*Dai 6 asp.net-mvc asp.net-mvc-routing
我在 .NET 4.6.1 上的 ASP.NET 4.5 上使用 ASP.NET MVC 5。
我有两个控制器:
FooController
FooIndexController
Run Code Online (Sandbox Code Playgroud)
这是因为 的 Index 操作Foo很复杂,所以我觉得它们最好在自己的单独Controller类中。
我正在使用基于属性的路由。我的 ASP.NET MVC 版本Order在RouteAttribute.
我有这些动作:
class FooController {
// Returns a view to allow editing of the Foo entity
[HttpGet]
[Route("~/{tenant}/foo/{fooName}", Order=2)]
public ActionResult Edit(String fooName, FooViewModel model) {
...
}
}
class FooIndexController {
// Returns a CSV file download listing all of the Foo entities
[HttpPost]
[Route("~/{tenant}/foo/csv", Order=1)]
public ActionResult IndexCsv() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
因此,虽然资源路径bar/foo/csv将匹配两个路由模板,但我已经Order=1为IndexCsv操作指定了一个显式,因此它应该匹配该操作的路由并完成它,但是我仍然得到这个黄屏死机:
找到多个与 URL 匹配的控制器类型。如果多个控制器上的属性路由与请求的 URL 匹配,就会发生这种情况。
请求已找到以下匹配的控制器类型:MyProject.FooController MyProject.FooIndexController
为什么不考虑Order财产?
我没有[RoutePrefix]在控制器上使用或任何其他属性。
更新:
我使用 Phil Haack 的 Routing Debugger 运行,奇怪的是它说POST bar/foo/csv除此之外没有匹配任何路由n/a,{*catchall}并且GET bar/foo/123也不匹配Edit的路由(尽管调用了该操作)-我想知道这个次要问题是否是 Route 中的错误调试器。
更新2:
我也没有使用基于全局/约定的路由。它是 100% 基于属性的路由。
| 归档时间: |
|
| 查看次数: |
884 次 |
| 最近记录: |