我的控制器中有一个重载动作:
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)
如何调用特定的重载?
答案 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)
{
...
}