使用AttributeRouting隐藏URL中的区域

时间:2012-04-18 17:57:06

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

我们正在使用Areas对使用AttributeRouting在ASP.NET MVC3中编写的API进行版本化以定义我们的路由。

现在我们有一个“v1”区域,这是我们的第一个API版本。当我们到达v2时,我们将复制v1并进行修改。

我想对网站使用相同的版本,我不希望路由中的/ v1。

我的问题是,如何在网址中隐藏区域,以便我可以调用

mywebsite.com/Users/1 

而不是

mywebsite.com/v1/Users/1

以下是我在控制器中的内容

    [RouteArea("/")]
    public class HomeController : Controller
    {
        //
        // GET: /v1/Home/
        [GET("")]
        public ActionResult Index()
        {
            return View();
        }

    }

以下是我尝试访问mywebsite.com/时获得的内容

error

提前致谢!

1 个答案:

答案 0 :(得分:4)

这样做:

[RouteArea("AreaName", AreaUrl = "")]

默认情况下,区域以区域名称为前缀。 AreaUrl属性允许您覆盖它。我将在这里更新维基:https://github.com/mccalltd/AttributeRouting/wiki/Areas

抱歉这个混乱!

此外,您不应在通过AR定义的任何网址的开头或结尾添加正斜杠。堆栈跟踪转储突出显示MVC正在名为“/”的文件夹中查找视图。如果你想要一个空网址,只需使用“”。

相关问题