我刚刚开始在我的ASP.NET MVC3应用程序中使用AttributeRouting。我从一开始就没有 Controller 。 (新的Empty MVC3应用程序)
然后我做了一个区域。 (称为:Documentation)
然后,我添加了一个 Controller (称为:DocumentationController)
然后,我就这样做了。

[RouteArea("Documentation")]
public class DocumentationController : Controller
{
    [GET("Index")]
    public ActionResult Index()
    {
        return View();
    }
}
以下路线可行:/documentation/index但是如何使这两条路线起作用?
1-/ 2-/documentation 可以用AttributeRouting完成吗?
更新:
我知道如何使用默认的ASP.NET MVC3结构等来执行此操作。我要尝试执行的操作是通过AttributeRouting来解决此问题。

最佳答案

我假设您想将“/”和“/documentation”映射到DocumentationController.Index,是吗?如果是这样,请执行以下操作:

[RouteArea("Documentation")]
public class DocumentationController : Controller
{
    [GET("Index", Order = 1)] // will handle "/documentation/index"
    [GET("")] // will handle "/documentation"
    [GET("", IsAbsoluteUrl = true)] // will handle "/"
    public ActionResult Index()
    {
        return View();
    }
}

一点解释:
  • GET(“Index”)的Order = 1将其标记为该操作的主要路线。由于反射的工作原理,如果不使用Order属性,就无法确定 Action 属性的顺序。 See here
  • 您可以将多个获取路由映射到一个 Action 。 See here
  • IsAbsoluteUrl属性使您可以覆盖由RouteArea和RoutePrefix属性添加的URL前缀。这样最终路由将匹配根请求。 See here

  • 希望这可以帮助。如果我对您尝试做的事情的最初假设不正确,请发表评论。

    关于c# - 尝试使用AttributeRouting创建默认的ASP.NET MVC路由,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9346926/

    10-09 20:10