我有两个 Controller ,一个名为“Products”,另一个名为“ProductsGroup”
[RoutePrefix("api/{clientUrl}/products")]
public class ProductsController : BaseApiController
{
/// <summary>
/// Get all products from a client
/// </summary>
/// <returns></returns>
[Route("")]
public HttpResponseMessage Get()
{
var model = Repository.GetProducts(ClientId).Select(p => ModelFactory.Create<ProductsModel>(p));
return Request.CreateResponse(HttpStatusCode.OK, model);
}
}
[RoutePrefix("api/{clientUrl}/products/groups")]
public class ProductGroupsController : BaseApiController
{
/// <summary>
/// Get all productgroups
/// </summary>
/// <returns></returns>
[Route("")]
public HttpResponseMessage Get()
{
var model = Repository.GetProductGroups(ClientId);
return Request.CreateResponse(HttpStatusCode.OK, model);
}
}
当我像这样路由 ProductGroupsController 时,由于“发现与 URL 匹配的多个 Controller 类型”,我无法访问
是否可以让路由忽略 url 的“products”部分,只映射到 productgroupscontroller?
最佳答案
考虑对两者使用单个 Controller :
[RoutePrefix("api/{clientUrl}/products")]
public class ProductsController : BaseApiController
{
[Route("")]
public HttpResponseMessage GetProducts() {}
[Route("groups")]
public HttpResponseMessage GetProductGroups() {}
}
或者不使用 RoutePrefixes:
public class ProductsController : BaseApiController
{
[Route("api/{clientUrl}/products")]
public HttpResponseMessage Get() {}
}
public class ProductGroupsController : BaseApiController
{
[Route("api/{clientUrl}/products/groups")]
public HttpResponseMessage Get() { }
}
关于c# - WebApi 2 使用属性路由构建嵌套路由。结果同时映射到两个 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25870412/