使用区域创建ASP.Net MVC3 ActionLink

时间:2012-03-21 06:29:45

标签: asp.net-mvc html.actionlink asp.net-mvc-3-areas

ASP.Net MVC3很酷,除了编程问题之外,我有更多的好奇心。假设我有一个名为'Cosmos'的区域,其中有一个带有'Index'动作的'StarController'。

现在,如果我必须创建一个动作链接,这两个语句有什么区别?

Html.ActionLink("Stars", "Index", "Stars", new { area = "Cosmos" }, null)

Html.ActionLink("Stars", "Index", "Cosmos/Stars")

从它的外观来看,它们完全相同。如果确实做了同样的事情,那么匿名类型{area =“Cosmos”}的用途是什么?

1 个答案:

答案 0 :(得分:3)

在第二个示例中,您将controllerName参数设置为Cosmos/Stars,这是错误的。无法以这种方式调用控制器。它生成正确的结果,因为帮助程序只是按原样使用参数,但您假设您的路由将具有某种样式。在您更改路由定义时,此链接将继续生成可能错误的相同标记。在第一个示例中,您不再依赖任何硬编码的url模式。无论您的路线和区域如何配置,它始终会生成正确的URL。