Using Html.ActionLink to call action on different controller
I am trying to navigate between controllers using ActionLink
. I will tell my problem with an example.
I am on Index view of Hat controller, and I am trying to use below code to create a link to Details action of Product controller.
<%= Html.ActionLink("Details", "Details", "Product", new { id=item.ID }) %>
Instead of creating a link to Details on Product controller, this generates a link to Details action under Hat controller and appends a Length parameter to the end of it:
Hat/Details/9?Length=7
I am not able to use HTML.ActionLink
to switch between controllers because of this problem. I will appreciate if you can point me to what I am doing wrong. Thanks
PS: I am using the default route setting that comes with MVC
routes.MapRoute("Default", "{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" } );
What you want is this overload :
//linkText, actionName, controllerName, routeValues, htmlAttributes
<%=Html.ActionLink("Details", "Details",
"Product", new {id = item.ID}, null) %>
With that parameters you're triggering the wrong overloaded function/method.
What worked for me:
<%= Html.ActionLink("Details", "Details", "Product", new { id=item.ID }, null) %>
It fires HtmlHelper.ActionLink(string linkText, string actionName, string controllerName, object routeValues, object htmlAttributes)
I'm using MVC 4.
Cheerio!