MVC中基于配置的路由和属性路由之间的区别是什么?

时间:2016-02-15 17:48:19

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

我使用最传统的方式来构建路线:

        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)        
    {
    }
}

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

1 个答案:

答案 0 :(得分:1)

您的第一个示例是基于配置的路由系统,您可以在其中交付路由构建器并将路由添加到路由构建器。这会集中您的路线配置代码。

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

他们俩都还在运作。它归结为您可以选择如何组织代码。这是基于意见的,所以我不会深入研究这个讨论。测试它们,然后选择你最喜欢的那个。

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

有关在ASP.NET中进行路由的详细信息,请参阅Microsoft's documentation

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

相关问题