/ / Criando um ActionLink ASP.Net MVC3 com uma área - asp.net-mvc, html.actionlink, asp.net-mvc-3-areas

Criando um ActionLink ASP.Net MVC3 com uma área - asp.net-mvc, html.actionlink, asp.net-mvc-3-areas

ASP.Net MVC3 é legal e tudo, mas eu tenho essa pergunta mais por curiosidade do que por problemas de programação. Digamos que eu tenha uma área chamada "Cosmos" dentro da qual exista um "StarController" com uma ação "Index".

Agora, se eu tivesse que criar um link de ação para isso, qual é a diferença entre essas duas afirmações?

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

e

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

Pelo que parece, eles são exatamente a mesma coisa. Se realmente faz a mesma coisa, qual é o uso do tipo anônimo {area = "Cosmos"}?

Respostas:

3 para resposta № 1

No segundo exemplo, você define o controllerName argumento para Cosmos/Stars o que está errado.Um controlador não pode ser chamado dessa forma. Ele gera o resultado correto porque o auxiliar simplesmente usa o argumento como está, mas você assumiu que suas rotas serão de um determinado estilo. No momento em que você alterar sua definição de roteamento, este link continuará gerando a mesma marcação, o que pode estar errado. No primeiro exemplo, você não depende mais de nenhum padrão de url codificado. Ele sempre gerará o url correto, não importando como suas rotas e áreas estão configuradas.