как вызвать перегруженное действие в .net mvc?

У меня есть перегруженное действие в моем контроллере:

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

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

Я хотел бы использовать одно и то же частичное представление для обоих списков, но потенциально у него будет другой отфильтрованный список изображений.

Я пытаюсь вызвать его из другого представления с помощью RenderAction:

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

Однако я получаю следующую ошибку:
Текущий запрос действия "AssignList" для контроллера типа "ImageController" неоднозначен для следующих методов действия: System.Web.Mvc.ActionResult AssignList(Int32) для типа UsiWeb.Controllers. ImageController System.Web.Mvc.ActionResult AssignList(Int32, Boolean) по типу UsiWeb.Controllers.ImageController

Как я могу вызвать конкретную перегрузку?


person Jeff Martin    schedule 03.04.2010    source источник


Ответы (2)


Два варианта:

  • объединить в один метод, например:

    открытый список назначений ActionResult (int id, bool? altList) {}

  • Дайте имя перегруженному методу, например:

    открытый список назначений ActionResult (int id) {}

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

Я отсылаю вас к этой ссылке SO: Можете ли вы перегрузить методы контроллера в ASP.NET MVC?

person Sunny    schedule 03.04.2010

Самым простым решением было бы объединить действия, сделав altList обнуляемым:

public ActionResult AssignList(int id, bool? altList)
{
    ...
}
person dahlbyk    schedule 03.04.2010