在ASP.Net Web API中解析属性路由URL

时间:2013-10-22 21:17:45

标签: c# asp.net-mvc asp.net-web-api attributerouting

我正在尝试在ActionFilterAttribute上获取特定属性路由URL的参数。例如,我有一个如下所示的行动:

[Route("/v1/test/{userId}/{udid}")]
public object GetNewObject(int userId, string udid) 

在动作过滤器属性中,绝对网址就像“http://test.example.com/v1/test/1/123-asda-231-asd”。但是我想在集合中解析这些参数为userId = 1和udid = ....

有可能吗?

2 个答案:

答案 0 :(得分:2)

无论如何我找到了答案,

在ControllerContext的RouteData中,我们可以检索指定的值。

actionContext.ControllerContext.RouteData.Values["udid"]

答案 1 :(得分:1)

[Route(“...”)]仅适用于MVC 5。 我想你想做这样的事情

[RoutePrefix("api/users")]
public class UsersController : ApiController
{
    // GET api/users
    [Route("")]
    public IEnumerable<User> Get() { ... }

    // GET api/user/5
    [Route("{id:int}")]
    public Book Get(int id) { ... }

    // POST api/users
    [Route("")]
    public HttpResponseMessage Post(User book) { ... }
}

每个用户都包含您的属性

public class User
{
     int UserId{get;set;}
     string Udid{get; set;} 
}