2012-03-21 61 views
3

ASP.Net MVC3非常酷,除了编程问题之外,所有的问题都出于好奇。假设我有一个名为'Cosmos'的区域,其中有一个带有'索引'操作的'StarController'。创建一个带有区域的ASP.Net MVC3 ActionLink

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

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

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

通过外观上来看,他们的完全一样的东西。如果它确实做了同样的事情,匿名类型{area =“Cosmos”}的用法是什么?

回答

3

在第二个示例中,您将controllerName参数设置为Cosmos/Stars,这是错误的。控制器不能这样调用。它会生成正确的结果,因为助手只是简单地使用参数,但您已假定您的路线将具有某种风格。目前你改变你的路由定义这个链接将继续生成相同的标记,这可能是错误的。在第一个示例中,您不再依赖任何硬编码的url模式。无论您的路线和区域如何配置,它始终会生成正确的网址。