【问题标题】:Is there a way to pass an IEnumerable parameter to another method有没有办法将 IEnumerable 参数传递给另一个方法
【发布时间】:2021-09-16 20:10:53
【问题描述】:

我正在尝试将 IEnumerable 模型参数从一种方法传递到另一种方法,但是当我调试代码时,即使方法签名相同,参数也不会被传递。

我尝试过使用和不使用绑定前缀

方法一:

[HttpPost]
    public ActionResult Create_Filter([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<CourseFilterViewModel> courseFilterVM)
    {


        return RedirectToAction("Course", "Filter", courseFilterVM);
    }

方法二:

public ActionResult Course([Bind(Prefix = "models")]IEnumerable<CourseFilterViewModel> courseFilterVM)
    {

        return View(courseFilterVM);
    }

我希望传递整个模型,但我得到的是一个空值。

【问题讨论】:

  • 我之前可以传递数据,但是这种特定类型的东西让我很受挫
  • 您在这里所做的基本上是由于重定向将复杂对象发送回浏览器。所以你告诉客户端“嘿,在这里寻找你需要的数据”但是客户端不能以这种方式将 IEnumerable 传递回服务器,如果你想这样做,你需要将数据存储在某处服务器,然后在下一个方法中再次将其拾取。或者,查看它您只是在过滤数据,因此将其传递给要过滤的无控制器类并返回结果,这样您就不需要重定向,只需返回带有新过滤数据的视图。

标签: asp.net-mvc


【解决方案1】:

您可以简单地执行以下操作:

[HttpPost]
public ActionResult Create_Filter([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<CourseFilterViewModel> courseFilterVM)
{
    // Others stuffs  here

    return Course(courseFilterVM);
}

【讨论】:

    【解决方案2】:

    如果你想将模型传递给视图

    public ActionResult Create_Filter()
    {
        return View(); 
        OR
        return View(CourseFilterVM); // Pass as a parameter
    }
    

    查看 - Create_Filter.cshtml

    @model IEnumerable<CourseFilterViewModel>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      • 2012-02-25
      相关资源
      最近更新 更多