kbaccouche
kbaccouche

Reputation: 4605

url.Action(controller, action) not routing as expected

In my ASP.NET MVC 3, I am using this code

<a [email protected]("myController", "myaction")>

But when I click on it, it does't go to my action. Instead, in the URL I see this

http://localhost:1402/?Length=2

Am I missing something?

Thanks.

Edit :

Here are my routes :

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

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

    }

Upvotes: 4

Views: 31347

Answers (4)

KrittMasta
KrittMasta

Reputation: 1

For default action ( action that is not defined in route ), normal HTTP GET will automagically go to, you just need to use null action.

@Url.Action( null, "Customer" )

Upvotes: 0

Tomino
Tomino

Reputation: 6249

I've had same problem... My solution:

@Html.ActionLink("Link text", "myAction", "myController", new { id=item.ID }, null)

Just adding null to last parameter.

Upvotes: 1

Rafay
Rafay

Reputation: 31033

the first argument is interpretted as the Action

@url.Action("myaction","myController")

Upvotes: 11

Charles Ouellet
Charles Ouellet

Reputation: 6518

The signature of Url.Action is:

Url.Action(string actionName, string controllerName)

According to your code, the order of your parameters are incorrect, you should try:

@Url.Action("myAction", "myController")

Also remember that to remove the "Controller" part of the controller, for exemple, if I have a CustomerController with a Index action that would be like that:

@Url.Action("Index", "Customer")

Upvotes: 4

Related Questions