MVC 中基于配置的路由和属性路由有什么区别

本文关键字:路由 属性 区别 什么 于配置 配置 MVC | 更新日期: 2023-09-27 18:34:37

我用了最传统的方法来构建路线:

        routes.MapRoute(
            name: "Client",
            url: "{controller}/{id}",
            defaults: new { controller = "Client", action = "Index", id = UrlParameter.Optional });

        routes.MapRoute(
            "Default,
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });

但是我在某些路由上遇到了麻烦,我遇到了一种在 MVC 5 中创建路由的新方法。

下一个示例:

public class ClientController : BaseController
{
    [HttpGet]
    [Route"({controller}/{id})"]
    public ActionResult Index(string id = null)        
    {
    }        
    [Route"({controller}/{action}/{id})"]
    public ActionResult GetAllClients(string id = null)        
    {
    }
}

我想知道它是否运作良好,它们之间的真正区别是什么。有人可以帮助我吗?

MVC 中基于配置的路由和属性路由有什么区别

您的第一个示例是基于配置的路由系统,在该系统中,您将获得一个路由构建器并将路由添加到其中。这将集中您的路由配置代码。

第二个示例称为属性路由。它允许您通过将属性应用于控制器和操作方法来指定路由。

它们仍然起作用。它归结为您希望如何组织代码的选择。这是基于意见的,所以我不会深入研究那个讨论。测试它们,然后选择您最喜欢的一个。

请注意,这些并不是路由的唯一两个选项。例如,SharpRouting 向要调用的每个控制器添加函数,这些函数通过流畅的 API 创建路由。可能还有其他选择,或者您可以创建自己的选择!

有关 ASP.NET 中的路由的详细信息,请参阅 Microsoft 的文档。

完全免责声明 我与创建 SharpRouting 的开发人员合作,我们在软件中使用它(它可能最初是为我们的应用程序开发的,我不确定(。