MVC路由在不可能的情况下期望Id

时间:2016-05-04 09:09:20

标签: c# asp.net-mvc asp.net-mvc-routing

我的路由有问题: 我的控制器中有这种方法:

[HttpGet]
public JsonResult GetCase(CustomIdentity currentUser, string objectType, Guid objectId)

在我的路线中

r.Match("CTRL/{id}", "CTRL", "details");
r.Match("CTRL/GetCase", "CTRL", "GetCase");

问题是当我想对我的方法启动GET时: 我只能用

做到这一点
http://a.com/CTRL/GetCase/EE5014C2-C4AA-44E2-80F9-A23D01317790?objectType=123&objectId=1E5014C2-C4AA-44E2-80F9-A23D01317790

但我需要

http://a.com/CTRL/GetCase?objectType=123&objectId=1E5014C2-C4AA-44E2-80F9-A23D01317790

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

切换路线设置的顺序。第一个URI ......

http://a.com/CTRL/GetCase/EE5014C2-C4AA-44E2-80F9-A23D01317790?objectType=123&objectId=1E5014C2-C4AA-44E2-80F9-A23D01317790

匹配您设置的CTRL/{id}路由,其中​​URI中的GetCase满足{id}模板参数。约定使用它在映射路径时找到的第一个匹配路由。

您需要更改设置路线的顺序。从你所展示的,那将是

r.Match("CTRL/GetCase", "CTRL", "GetCase");
r.Match("CTRL/{id}", "CTRL", "details");