Estou tentando navegar entre os controladores usando ActionLink
. Vou contar o meu problema com um exemplo.
Estou na exibição de índice do controlador Hat e estou tentando usar o código abaixo para criar um link para a ação Detalhes do controlador do produto.
<%= Html.ActionLink("Details", "Details", "Product", new { id=item.ID }) %>
Em vez de criar um link para Detalhes no controlador do Produto, isso gera um link para a ação Detalhes em Hat controller e anexa um parâmetro Length ao final dele:
Hat/Details/9?Length=7
Não consigo usar HTML.ActionLink
para alternar entre controladores devido a esse problema. Agradeço se você puder me indicar o que estou fazendo de errado. obrigado
PS: estou usando a configuração de rota padrão que acompanha o MVC
routes.MapRoute("Default", "{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" } );
asp.net-mvc
kaivalya
fonte
fonte
Com esses parâmetros, você está acionando a função / método sobrecarregado errado.
O que funcionou para mim:
Ele dispara HtmlHelper.ActionLink (string linkText, string actionName, string controllerName, objeto routeValues, objeto htmlAttributes)
Estou usando o MVC 4.
Cheerio!
fonte
Eu recomendaria escrever esses auxiliares usando parâmetros nomeados para maior clareza da seguinte maneira:
fonte
Se você pegar o assembly MVC Futures (que eu recomendo), poderá usar um genérico ao criar o ActionLink e um lambda para construir a rota:
Você pode obter a montagem de futuros aqui: http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24471
fonte
Você está acertando errado a sobrecarga do ActionLink. Tente isso em vez disso.
fonte
tente isso está funcionando bem
fonte
Uma solução alternativa seria usar o
Url
objeto auxiliar para definir ohref
atributo de uma<a>
tag como:fonte
Observe que detalhes é uma página "Exibir" na pasta "Produtos".
ProductId é a chave primária da tabela. Aqui está a linha do Index.cshtml
fonte
esse código funcionou para mim em vista parcial:
fonte