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)
{
}
}
我想知道它是否运作良好,它们之间的真正区别是什么。有人可以帮助我吗?
您的第一个示例是基于配置的路由系统,在该系统中,您将获得一个路由构建器并将路由添加到其中。这将集中您的路由配置代码。
第二个示例称为属性路由。它允许您通过将属性应用于控制器和操作方法来指定路由。
它们仍然起作用。它归结为您希望如何组织代码的选择。这是基于意见的,所以我不会深入研究那个讨论。测试它们,然后选择您最喜欢的一个。
请注意,这些并不是路由的唯一两个选项。例如,SharpRouting 向要调用的每个控制器添加函数,这些函数通过流畅的 API 创建路由。可能还有其他选择,或者您可以创建自己的选择!
有关 ASP.NET 中的路由的详细信息,请参阅 Microsoft 的文档。
完全免责声明 我与创建 SharpRouting 的开发人员合作,我们在软件中使用它(它可能最初是为我们的应用程序开发的,我不确定(。