ASP.Net MVC3很酷,除了编程问题之外,我有更多的好奇心。假设我有一个名为'Cosmos'的区域,其中有一个带有'Index'动作的'StarController'。
现在,如果我必须创建一个动作链接,这两个语句有什么区别?
Html.ActionLink("Stars", "Index", "Stars", new { area = "Cosmos" }, null)
和
Html.ActionLink("Stars", "Index", "Cosmos/Stars")
从它的外观来看,它们完全相同。如果确实做了同样的事情,那么匿名类型{area =“Cosmos”}的用途是什么?
答案 0 :(得分:3)
在第二个示例中,您将controllerName
参数设置为Cosmos/Stars
,这是错误的。无法以这种方式调用控制器。它生成正确的结果,因为帮助程序只是按原样使用参数,但您假设您的路由将具有某种样式。在您更改路由定义时,此链接将继续生成可能错误的相同标记。在第一个示例中,您不再依赖任何硬编码的url模式。无论您的路线和区域如何配置,它始终会生成正确的URL。