views:

33

answers:

2

I am using Asp.Net MVC 2 - RC w/ Areas.

I am receiving an ambigious controller name exception due to having same controller name in two different areas.

I've read Phil Haack's post Ambiguous Controller Names With Areas

I can't figure out the syntax when trying to use UrlHelper (I have an extensions class).

e.g.

public static string MyAreaHome(this UrlHelper helper) {
    return helper.RouteUrl("ARoute", 
        new { controller = "Home", action = "Index" });
}

I've tried the obvious of adding namespace="mynamespace" but that didn't work, it just added the namespace to the url. Thanks for any help.

+1  A: 

Maybe you can work around it by using two separate routes. I think this is also what Phil is trying to demonstrate in the route registration example on the 'Ambiguous Controller Names With Areas' post

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

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

Then you can refer to both routes like this:

public static string MyAreaHome(this UrlHelper helper) {
    return helper.RouteUrl("ARoute", 
        new { controller = "Home", action = "Index" });
}

public static string MyOtherAreaHome(this UrlHelper helper) {
    return helper.RouteUrl("BRoute", 
        new { controller = "Home", action = "Index" });
}
Sander Rijken
This helped resolve the issue. On the "general" route I specified the namespace. In the area route, where the routes are registered I specified the area namespace and that solved the issue.
B Z
A: 

did you try

helper.RouteUrl("ARoute", 
    new { controller = "Home", action = "Index", Area = "YourArea" });
moi_meme
Yes, that doesn't work either. It added the area to the url as a querystring
B Z