как вызвать перегруженное действие в .net mvc? - PullRequest
3 голосов
/ 03 апреля 2010

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

    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

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

Ответы [ 2 ]

4 голосов
/ 03 апреля 2010

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

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

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

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

    public ActionResult AssignList (int id) {} ​​

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

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

2 голосов
/ 03 апреля 2010

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

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