Asp.net mvc 创建带有区域的ASP.Net MVC3 ActionLink

Asp.net mvc 创建带有区域的ASP.Net MVC3 ActionLink,asp.net-mvc,html.actionlink,asp.net-mvc-3-areas,Asp.net Mvc,Html.actionlink,Asp.net Mvc 3 Areas,NETMVC3很酷,但我提出这个问题更多的是出于好奇,而不是编程问题。假设我有一个叫做“宇宙”的区域,其中有一个带有“索引”动作的“恒星控制器” 现在,如果我必须创建一个与此相关的操作链接,那么这两个语句之间的区别是什么 Html.ActionLink("Stars", "Index", "Stars", new { area = "Cosmos" }, null) 及 从表面上看,他们是完全一样的。如果它确实做了同样的事情,那么匿名类型{area=“Cosmos”}的用途是什么?在第二个示例

NETMVC3很酷,但我提出这个问题更多的是出于好奇,而不是编程问题。假设我有一个叫做“宇宙”的区域,其中有一个带有“索引”动作的“恒星控制器”

现在,如果我必须创建一个与此相关的操作链接,那么这两个语句之间的区别是什么

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


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

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

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