views:

99

answers:

2

I have an overloaded action in my Controller:

    public ActionResult AssignList(int id)
    {
        ...
    }

    [AcceptVerbs((HttpVerbs.Get))]
    public ActionResult AssignList(int id, bool altList)
    {
        ...
    }

I'd like to use the same partial view for both lists but it will potentially have a differently filtered list of Images.

I am trying to call it from another view using RenderAction:

<% Html.RenderAction("AssignList", "Image", new { id = Model.PotholeId, altList = true }); %>

However I am getting the following error:
The current request for action 'AssignList' on controller type 'ImageController' is ambiguous between the following action methods: System.Web.Mvc.ActionResult AssignList(Int32) on type UsiWeb.Controllers.ImageController System.Web.Mvc.ActionResult AssignList(Int32, Boolean) on type UsiWeb.Controllers.ImageController

How can I call the specific overload?

+2  A: 

The easiest solution would be to combine the actions, making altList nullable:

public ActionResult AssignList(int id, bool? altList)
{
    ...
}
dahlbyk
+2  A: 

Two options:

  • combine into a single method like:

    public ActionResult AssignList(int id, bool? altList){}

  • Give a name to the overloaded method like:

    public ActionResult AssignList(int id){}

    [ActionName("SomeActionName")] public ActionResult AssignList(int id, bool altList){}

I will refer you to this SO link: http://stackoverflow.com/questions/436866/can-you-overload-controller-methods-in-asp-net-mvc

Sunny