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