我如何在.net mvc中调用重载动作?

时间:2010-04-03 16:46:56

标签: asp.net-mvc overloading

我的控制器中有一个重载动作:

    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 }); %>

但是我收到以下错误:
控制器类型“ImageController”上的当前动作“AssignList”请求在以下操作方法之间不明确: System.Web.Mvc.ActionResult类型为UsiWeb.Controllers.ImageController的AssignList(Int32) System.Web.Mvc.ActionResult类型UsiWeb.Controllers.ImageController上的AssignList(Int32,Boolean)

如何调用特定的重载?

2 个答案:

答案 0 :(得分:4)

两个选项:

  • 组合成一个方法,如:

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

  • 为重载方法命名,如:

    public ActionResult AssignList(int id){}

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

我会将您推荐给此SO链接:Can you overload controller methods in ASP.NET MVC?

答案 1 :(得分:2)

最简单的解决方案是组合动作,使altList可以为空:

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