【问题标题】:how do i call an overloaded action in .net mvc?如何在 .net mvc 中调用重载操作?
【发布时间】:2010-04-03 16:46:56
【问题描述】:

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

    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 AssignList(Int32) 类型为 UsiWeb.Controllers.ImageController UsiWeb.Controllers.ImageController 类型上的 System.Web.Mvc.ActionResult AssignList(Int32, Boolean)

如何调用具体的重载?

【问题讨论】:

    标签: asp.net-mvc overloading


    【解决方案1】:

    两个选项:

    • 组合成一个方法,例如:

      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?

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-04
        • 2021-11-18
        • 2017-11-02
        • 2017-10-02
        • 1970-01-01
        • 1970-01-01
        • 2023-03-06
        • 1970-01-01
        相关资源
        最近更新 更多