从具有属性路由的URL中删除控制器名称

时间:2016-02-18 05:16:54

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

我想从特定Controller的URL中删除控制器名称。

我的控制器名称为产品

我找到了一些链接来做这个

Routing with and without controller name

MVC Routing without controller

但是所有上述链接都在路由配置文件中完成。那些也影响着其他控制器。我想使用属性路由来做到这一点。

有可能吗?因为我想仅为产品控制器执行此操作。

我试图像这样做

[Route("Sample/{Name}")]

但它不起作用。

2 个答案:

答案 0 :(得分:1)

Gabriel的答案是正确的,但是,由于您要求使用MVC,并且答案适用于Web API,因此可能会有点误导。

在任何情况下,您想要的是将注释放在类定义而不是操作方法上。 MVC示例如下:

[RoutePrefix("SomethingOtherThanProduct")]
public class ProductController : Controller
{
      public ActionResult Index()
      {
           ...
           return View();
      }
}

我也将此作为答案,因为您可能会发现以下文章有用:[Attribute] Routing in ASP.NET MVC 5 / WebAPI 2

答案 1 :(得分:0)

确保在整个控制器类上设置RoutePrefix属性,并在操作上使用Route属性。

[RoutePrefix("notproducts")]
public class ProductsController : ApiController
{
    [Route("")]
    public IEnumerable<Product> Get() { ... }
}