tags:

views:

26

answers:

2

Hi Guys,

I have companycontroller, index view and I need to create a link to dispaly all contacts for this company,

this is working but YUK, How can Refactor this:

  <%: Html.ActionLink("Contacts", "Index/" + item.CompanyID, "Contacts")%>  

thanks

A: 

Thats pretty... different...

Normally it would be:

<%: Html.ActionLink("Contacts", "Index", "Contacts", new { item.CompanyID } )%>

with the last parameter being a anonymous object which gets translated into a routevalue dictionary.

jfar
it gives me : http://localhost:14501/companies?Length=8, my current url is: http://localhost:14501/companies and I need to have this: http://localhost:14501/Contacts/Index/4 7 is the company ID
user1111111
It must be new {id=item.CompanyID}
Malcolm Frexner
@Malcom Frexner - Not necessarily. I was assuming his route value was CompanyID.
jfar
+2  A: 

Assuming you are using the default routes:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

If you need to specify the controller name try this (don't forget the last parameter - the html attributes which I am passing to null here):

<%: Html.ActionLink("Contacts", "Index", "Contacts", new { id = item.CompanyID }, null) %>

or without specifying the controller (using the current controller):

<%: Html.ActionLink("Contacts", "Index", new { id = item.CompanyID }) %>
Darin Dimitrov
thanks it worked: <%: Html.ActionLink("Contacts", "Index", "Contacts", new { id = item.CompanyID }, null) %>
user1111111