Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Html.RenderAction causes "No route in the route table matches the supplied values"

I'm trying to use Html.RenderAction in ASP.NET MVC 2 RC2 in this way:

In Menu Controler:

[ChildActionOnly]
public ActionResult ContentPageMenus()
{
     var menus = _contentPageMenuRepository.GetAll().WithCulture(CurrentCulture);
     return PartialView(menus);
}

And in my Index view (for Index action of Home controller):

 <% Html.RenderAction("ContentPageMenus", "ContentPageMenu");%>

But I always get this error message: No route in the route table matches the supplied values.

like image 257
Mahdi Taghizadeh Avatar asked Feb 22 '10 13:02

Mahdi Taghizadeh


2 Answers

Adding a third parameter like this was the solution for me (in razor):

@{Html.RenderAction("ActionName", "ControllerName", new { area = string.Empty });}

like image 89
Memet Olsen Avatar answered Nov 14 '22 05:11

Memet Olsen


MVC Futures used to allow rendering of actions that had no routes. This has changed in ASP.NET MVC2.

If you want RenderAction to work and would like to hide your route so its not publicly accessible.

  1. Add a route for your action in globals.asax.cs.
  2. Decorate your action with the [ChildActionOnly] attribute.
like image 23
Sam Saffron Avatar answered Nov 14 '22 06:11

Sam Saffron